https://www.acmicpc.net/problem/2164
이 문제의 대략적인 단계는
1. 맨 위의 숫자 pop
2. 그리고 나서 숫자를 뒤로 옮김
을 반복하다가 1개가 남았을때의 카드가 뭔지 구하는 문제이다. 덱으로 해결하려다가, 생각해보니 큐만 써도 해결될 것 같아 큐로 해결하였다. 덱으로도 해결가능하다.
#include <iostream>
#include <queue>
using namespace std;
int main () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n, temp;
queue<int> q;
cin >> n;
for (int i = 1; i <= n; i++) q.push(i);
while (q.size() != 1) { // 단 한장의 카드가 남을 때까지 반복
q.pop(); // 1단계. 맨 위의 카드는 버림
temp = q.front(); // 2단계. 맨 위의 카드를 저장
q.pop(); // 그리고 버린 후에
q.push(temp); // 맨 뒤로 옮김
}
cout << q.front();
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 10814번 C, C++ 풀이 (0) | 2021.11.25 |
---|---|
백준 11650번 C, C++ 풀이 (0) | 2021.11.25 |
백준 1181번 C, C++ 풀이 (0) | 2021.11.25 |
백준 10773번 C++풀이 (0) | 2021.11.18 |
백준 1009번 C언어 풀이 (0) | 2021.11.11 |