πŸ• Baaaaaarking/0x06κ°• - 큐

[BOJ S4][C++] λ°±μ€€ 10845번 : 큐

선달 2022. 2. 17. 18:32
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/10845

 

10845번: 큐

첫째 쀄에 μ£Όμ–΄μ§€λŠ” λͺ…λ Ήμ˜ 수 N (1 ≤ N ≤ 10,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” λͺ…령이 ν•˜λ‚˜μ”© 주어진닀. μ£Όμ–΄μ§€λŠ” μ •μˆ˜λŠ” 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100,000보닀 μž‘κ±°λ‚˜ κ°™λ‹€. λ¬Έμ œμ— λ‚˜μ™€μžˆμ§€

www.acmicpc.net

 

문제

μ •μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” 큐λ₯Ό κ΅¬ν˜„ν•œ λ‹€μŒ, μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” λͺ…령을 μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

λͺ…령은 총 μ—¬μ„― 가지이닀.

  • push X: μ •μˆ˜ Xλ₯Ό 큐에 λ„£λŠ” 연산이닀.
  • pop: νμ—μ„œ κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό λΉΌκ³ , κ·Έ 수λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
  • size: 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.
  • empty: 큐가 λΉ„μ–΄μžˆμœΌλ©΄ 1, μ•„λ‹ˆλ©΄ 0을 좜λ ₯ν•œλ‹€.
  • front: 큐의 κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
  • back: νμ˜ κ°€μž₯ 뒀에 μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.

μž…λ ₯

첫째 쀄에 μ£Όμ–΄μ§€λŠ” λͺ…λ Ήμ˜ 수 N (1 ≤ N ≤ 10,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” λͺ…령이 ν•˜λ‚˜μ”© 주어진닀. μ£Όμ–΄μ§€λŠ” μ •μˆ˜λŠ” 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100,000보닀 μž‘κ±°λ‚˜ κ°™λ‹€. λ¬Έμ œμ— λ‚˜μ™€μžˆμ§€ μ•Šμ€ λͺ…령이 μ£Όμ–΄μ§€λŠ” κ²½μš°λŠ” μ—†λ‹€.

좜λ ₯

좜λ ₯ν•΄μ•Όν•˜λŠ” λͺ…령이 μ£Όμ–΄μ§ˆ λ•Œλ§ˆλ‹€, ν•œ 쀄에 ν•˜λ‚˜μ”© 좜λ ₯ν•œλ‹€.

 

풀이

c++μ—μ„œ 큐λ₯Ό μ‚¬μš©ν•΄λ³΄μž

μ‹œκ°„ λ³΅μž‘λ„ : μ›μ†Œ μΆ”κ°€, 제거, μ•ž λ’€ μ›μ†Œ 확인 O(1)

 

- ν—€λ”νŒŒμΌ

#include <queue>

 

- 큐 μ„ μ–Έν•˜κΈ°

queue<νƒ€μž…> 이름;
queue<int> q;

 

- 큐와 κ΄€λ ¨λœ ν•¨μˆ˜λ“€

// void
q.push(κ°’);
q.pop();

// bool
q.empty();

// int
q.size()

// μš”μ†Œ
q.front()
q.back()

 


μœ„λ₯Ό λ°”νƒ•μœΌλ‘œ μ λ‹Ήνžˆ μ˜ˆμ™Έμ²˜λ¦¬ν•΄μ£Όκ³  ν’€λ©΄ λœλ‹€

// Authored by : seondal
// Co-authored by : -

//#include <bits/stdc++.h>
#include <iostream>
#include <queue>

using namespace std;

queue<int> q;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    int n;
    cin >> n;
    while(n--){
        string command;
        cin >> command;
        
        if(command == "push"){
            int num;
            cin >> num;
            q.push(num);
        }
        else if(command == "pop"){
            if(!q.empty()){
                cout << q.front()<<"\n";
                q.pop();
            }
            else cout << -1 << "\n";
        }
        else if(command == "size"){
            cout << q.size() << "\n";
        }
        else if(command == "empty"){
            if(q.empty()) cout << 1 << "\n";
            else cout << 0 << "\n";
        }
        else if(command == "front"){
            if(!q.empty()) cout << q.front() << "\n";
            else cout << -1 << "\n";
        }
        else if(command == "back"){
            if(!q.empty()) cout << q.back() << "\n";
            else cout << -1 << "\n";
        }
    }
    
    return 0;
}

/*
 */
λ°˜μ‘ν˜•

'πŸ• Baaaaaarking > 0x06κ°• - 큐' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[BOJ S4][C++] λ°±μ€€ 2164번: μΉ΄λ“œ2  (0) 2022.02.18