콘솔창 & 윈도우창/코딩 테스트
[백준 실버4] 2164 카드2
뽀또치즈맛
2024. 10. 17. 21:22
밑에 큐라고 써있는 만큼 선입선출(FIFO)의 구조를 가질 수 있는 구현 방법이다.
차례대로 넣고 빼는 순서는 가장 먼저 넣은 것을 빼고 (= 큐에 있는 것을 뺀다)
그 바로 뒤에 있던 카드를 뒤에 넣는다(= 큐에 새로 추가한다).
다시 그리고 세 번째에 있던 카드를 뺀다.( = 큐에 있는 것을 뺀다)
라는 과정의 반복이다.
카드가 단 1장 남을 때 까지면 Queue의 사이즈가 1일때 까지가 반복문의 조건된다.
#include <string>
#include <vector>
#include <iostream>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
queue<int> que;
int N;
cin >> N;
for (int i = 1; i <= N; i++) {
que.push(i);
}
while (que.size() > 1)
{
que.pop();
que.push(que.front());
que.pop();
}
cout << que.front();
return 0;
}