반응형
https://www.acmicpc.net/problem/2161
요약 )
- 1 이상 1,000 이하의 수를 입력한다
- 1번 카드부터 입력 한 수까지의 카드가 1번 카드가 제일 위에 있게 순서대로 놓여 있다
- 일정 규칙에 맞게 카드를 하나씩 버리는데, 한장이 남을 때까지 반복한다
- 버리는 규칙은 아래와 같다
- 맨위의 카드를 버린다 (1번 카드)
- 그 이후 남은 카드 중에서 제일 위에 있는 카드를 제일 아래로 옮긴다
- 그리고 다시 맨 위에 카드를 버린다
- 이후 맨 위의 카드를 다시 제일 아래로 옮긴다
- 한 장 남을 때까지 반복한다
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<int> q;
queue<int> q1;
int n, drop, swap;
cin >> n;
for (int i = 1; i <= n; i++) {
q.push(i);
}
while (q.size() != 1) {
drop = q.front();
q.pop();
q1.push(drop);
swap = q.front();
q.pop();
q.push(swap);
}
while (!q1.empty()) {
cout << q1.front() << " ";
q1.pop();
}
cout << q.front() << endl;
return 0;
}
'C++' 카테고리의 다른 글
(C++) [백준] 수 정렬하기 (0) | 2023.01.10 |
---|---|
(C++) [백준] 최소 힙 (0) | 2023.01.10 |
(C++) [백준] 큐 (0) | 2023.01.10 |
(C++) [백준] 괄호(Parenthesis) (0) | 2023.01.10 |
(C++) [백준] Stack (0) | 2023.01.10 |