문제설명
입출력 예제
개념
1부터 N까지 정렬되어 있는 시퀀스에서 맨 앞에 수를 뽑고, 앞 뒤를 바꿔갔을 때, 마지막에 남는 카드가 무엇일지 구하는 문제다. 먼저 들어간 요소가 뽑힌다는 관점에서 queue를 적절히 활용하면 해결할 수 있는 문제다.
풀이
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int N, n;
cin >> N;
queue<int> q;
for (int i = 1; i <= N; ++i)
q.push(i);
if (q.size() == 1)
cout << '1';
else
{
q.pop();
while (q.size() > 1)
{
n = q.front();
q.pop();
q.push(n);
q.pop();
}
cout << q.back();
}
}
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 11866 요세푸스 문제 0 with C++ (0) | 2023.05.15 |
---|---|
[백준] 18258 큐 2 with C++ (2) | 2023.05.14 |
[백준] 1874 스택 수열 with C++ (0) | 2023.05.12 |
[백준] 4949 균형잡힌 세상 with C++ (0) | 2023.05.11 |
[백준] 9012 괄호 with C++ (0) | 2023.05.10 |