[백준] 2164 카드2 - C++

문제) n장의 카드를 카드가 한장 남을 때까지 제일 위에 있는 카드를 버리고 그 다음으로 위에 있던 카드를 맨 아래로 옮기는 작업을 반복한다. 마지막으로 남게 되는 카드를 구하는 프로그램을 만들어보자.

    입력은 정수 N이 첫째줄에 주어진다.

    시간제한은 2초, 메모리 제한은 128MB 이다.

 

큐의 선입선출로 쉽게 구현할 수 있는 문제다.

 

더보기
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n;
	queue<int> que;

	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;
}