728x90
문제 2164번
https://www.acmicpc.net/problem/2164
순서대로 넣고 앞에서부터 빼고 뒤로 넣고 하는 것이기 때문에 큐를 사용한다. q에 입력값에 맞는 숫자들을 넣어주고, 수행해야되는 것을 큐의 사이즈가 1이 될 때까지 반복문을 돌려준다. 먼저 앞 숫자를 pop으로 버리고 front로 맨 앞에 있는 것을 가지고 push를 통해 큐의 맨 뒤에 다시 넣어준다. 그리고 옮긴 숫자는 pop으로 버려준다.
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n;
queue <int> q;
cin >> n;
for (int i = 1; i <= n; i++) {
q.push(i);
}
while (q.size() > 1) {
q.pop(); //버리기
q.push(q.front()); //맨 위에 있는 숫자를 맨 아래로
q.pop(); //옮긴 숫자를 제거
}
cout << q.front();
return 0;
}
728x90
'백준 > C++' 카테고리의 다른 글
[C++] 백준 28279번 - 덱 2 (2) | 2024.06.21 |
---|---|
[C++] 백준 11866번 - 요세푸스 문제 0 (0) | 2024.06.21 |
[C++] 백준 18258번 - 큐 2 (1) | 2024.06.17 |
[C++] 백준 12789번 - 도키도키 간식드리미 (0) | 2024.06.17 |
[C++] 백준 28278번 - 스택 2 (0) | 2024.06.16 |