γλͺ©μ°¨γ
0. κ°μ
1. λ¬Έμ
2. νμ΄
3. μ½λ
0. κ°μ
μλ£κ΅¬μ‘°, ν λ¬Έμ . 'λ°±μ€ 10845 ν' λ¬Έμ μ λμΌνμ§λ§ μ λ ₯κ°μ μκ° ν¨μ¬ ν¬λ€.
1. λ¬Έμ
https://www.acmicpc.net/problem/18258
[λ¬Έμ ]
μ μλ₯Ό μ μ₯νλ νλ₯Ό ꡬνν λ€μ, μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λͺ λ Ήμ μ²λ¦¬νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
λͺ λ Ήμ μ΄ μ¬μ― κ°μ§μ΄λ€.
- push X: μ μ Xλ₯Ό νμ λ£λ μ°μ°μ΄λ€.
- pop: νμμ κ°μ₯ μμ μλ μ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- size: νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.
- empty: νκ° λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.
- front: νμ κ°μ₯ μμ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- back: νμ κ°μ₯ λ€μ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
[μ λ ₯]
첫째 μ€μ μ£Όμ΄μ§λ λͺ λ Ήμ μ N (1 ≤ N ≤ 2,000,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ λͺ λ Ήμ΄ νλμ© μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ μ μλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 100,000λ³΄λ€ μκ±°λ κ°λ€. λ¬Έμ μ λμμμ§ μμ λͺ λ Ήμ΄ μ£Όμ΄μ§λ κ²½μ°λ μλ€.
[μΆλ ₯]
μΆλ ₯ν΄μΌνλ λͺ λ Ήμ΄ μ£Όμ΄μ§ λλ§λ€, ν μ€μ νλμ© μΆλ ₯νλ€.
[μμ μ λ ₯ 1]
15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front
[μμ μΆλ ₯ 1]
1
2
2
0
1
2
-1
0
1
-1
0
3
2. νμ΄
ν Classλ₯Ό λ§λ ν, νμ ADTλ₯Ό μ§μ ꡬννλ λ°©μμΌλ‘ λ§λ€μλ€.
STLμ Queueλ₯Ό μ΄μ©ν΄λ μ’μκ² μ§λ§, κ³΅λΆ λͺ©μ μΌλ‘ μ§μ ꡬνμ μ ννλ€.
3. μ½λ
#include <iostream>
#include <string>
using namespace std;
class queue {
private:
int* arr;
int F;
int R;
const int max = 2000001;
public:
/* Constructor & Destructor */
queue() : F(0), R(0) {
arr = new int[max]();
}
~queue() {
delete[] arr;
}
/* Method */
void push(int elem) {
arr[++R] = elem;
}
int pop(void) {
if (F == R)
return -1;
else
return arr[++F];
}
int size(void) {
return R - F;
}
int empty(void) {
if (F == R)
return 1;
else
return 0;
}
int front(void) {
if (F == R)
return -1;
else
return arr[F + 1];
}
int back(void) {
if (F == R)
return -1;
else
return arr[R];
}
};
int main(int argc, char* argv[]) {
/* Faster */
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
/* Init */
queue q;
/* Input */
int N; cin >> N;
for (int i = 0; i < N; i++) {
string str; cin >> str;
if (str == "push") {
int elem; cin >> elem;
q.push(elem);
}
else if (str == "pop") {
cout << q.pop() << '\n';
}
else if (str == "size") {
cout << q.size() << '\n';
}
else if (str == "empty") {
cout << q.empty() << '\n';
}
else if (str == "front") {
cout << q.front() << '\n';
}
else if (str == "back") {
cout << q.back() << '\n';
}
}
/* End */
return 0;
}
/* μν ν μ΄μ© μν¨ */
/* 10845 λ¬Έμ μ λμΌ (μ
λ ₯κ° ν¬κΈ° μ°¨μ΄) */
'γβ¨οΈα΄sγPS > λ°±μ€_μλ£κ΅¬μ‘°[DS]' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Baekjoon/λ°±μ€][1966][C/C++] νλ¦°ν° ν (0) | 2023.05.03 |
---|---|
[Baekjoon/λ°±μ€][2164][C/C++] μΉ΄λ2 (0) | 2023.05.03 |
[Baekjoon/λ°±μ€][10845][C/C++] ν (0) | 2023.05.03 |
[Baekjoon/λ°±μ€][1406][C/C++] μλν° (0) | 2023.05.03 |
[Baekjoon/λ°±μ€][1991][C/C++] νΈλ¦¬ μν (0) | 2023.05.03 |