반응형
https://www.acmicpc.net/problem/2164
- 문제
해설
N을 입력받은 후 1 ~ N까지의 수를 큐에 삽입한다.
규칙은 다음과 같다.
1. 맨 위에 카드를 버린다
2. 맨 위에 카드를 맽 밑으로 옮긴다
다음 2개의 규칙을 순서대로 반복하면서 마지막에 남은 카드를 출력하면 된다.
1번을 코드로 옮기면 queue.pop();에 해당하고
2번을 코드로 옮기면 queue.push(queue.front()); queue.pop();에 해당한다
queue.push(queue.front());로 맨 위에 카드를 맨 밑으로 넣고 queue.pop();으로 맨 위에 카드를 지워준다.
queue.front()는 큐의 앞을 참조하는 함수로 삭제는 해주지 않기 때문에 따로 삭제를 해주어야 한다.
코드
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
queue<int> Q;
int N;
cin >> N;
for (int i = 1; i <= N; i++) {
Q.push(i);
}
while (Q.size() != 1) {
Q.pop();
Q.push(a.front());
Q.pop();
}
cout << Q.front();
return 0;
}
반응형
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[BOJ/백준] 10811번 바구니 뒤집기 - [c/c++] 풀이 (0) | 2023.04.26 |
---|---|
[BOJ/백준] 1021번 회전하는 큐 - c++ 풀이 (0) | 2023.04.26 |
[BOJ/백준] 18258번 큐 2 - c++ 풀이 (0) | 2023.04.10 |
[BOJ/백준] 5597번 과제 안 내신 분..? - [c/c++] 풀이 (0) | 2023.04.01 |
[BOJ/백준] 10813번 공 바꾸기 - [c/c++] 풀이 (0) | 2023.03.31 |
댓글