알고리즘 문제
[백준] 2161번 카드1
feelcoding
2020. 2. 9. 19:05
728x90
https://www.acmicpc.net/problem/2161
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리
www.acmicpc.net
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
q.push(i);
}
while (true) {
if (q.size() == 1) break;
int discard = q.front();
q.pop();
cout << discard << " ";
if (q.size() == 1) break;
int cur = q.front();
q.pop();
q.push(cur);
}
cout << q.front();
return 0;
}
728x90