- 문제
- 풀이
#include <iostream>
#include <queue>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n = 0;
queue<int> q;
cin >> n;
// 큐 채우기
for (int i = 1; i <= n; i++)
{
q.push(i);
}
while (q.size() > 1)
{
// 우선 제일 위에 있는 카드를 버린다.
q.pop();
// 제일 위에 있는 카드를 제일 아래로 옮긴다. (push 한뒤 pop)
q.push(q.front());
q.pop();
}
cout << q.front() << '\n';
return 0;
}
- 풀이
문제 속 요구사항을 순서대로 구현하면 되는 간단한 문제다.
제일 먼저 넣은 카드가 먼저 나가기 때문에 큐를 사용해서 풀 수 있다.
1. 우선 큐를 순서대로 채운 뒤,
2. N만큼 반복하면서
3. 제일 위에 있는 카드를 버리고
4. 뒤에 이어서 제일 위에 있는 카드를 제일 아래로 옮기고(push)
5. pop하여 지운다.
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[백준/10845번/C++] 큐 (0) | 2024.11.10 |
---|---|
[백준/2443번/C++] 별 찍기 - 6 (0) | 2024.11.09 |
[백준/2442번/C++] 별 찍기 - 5 (0) | 2024.11.07 |
[백준/10093번/C++] 숫자 (0) | 2024.11.05 |
[백준/3273번/C++] 두 수의 합 (0) | 2024.10.28 |