밑에 큐라고 써있는 만큼 선입선출(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;
}
'콘솔창 & 윈도우창 > 코딩 테스트' 카테고리의 다른 글
[실버3] 17253 삼삼한 수 2 (0) | 2024.10.18 |
---|---|
[백준 실버1] 11286 절대값 힙 (0) | 2024.10.17 |
프로그래머스 LV.1 햄버거 만들기 (2) | 2024.10.14 |
[백준 골드4] 17298 오큰수 (1) | 2024.10.14 |
[백준 실버2] 1874 스택 수열 (3) | 2024.10.13 |