본문 바로가기

백준/C++

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

728x90

 

문제 2164번

https://www.acmicpc.net/problem/2164

 

순서대로 넣고 앞에서부터 빼고 뒤로 넣고 하는 것이기 때문에 큐를 사용한다. q에 입력값에 맞는 숫자들을 넣어주고, 수행해야되는 것을 큐의 사이즈가 1이 될 때까지 반복문을 돌려준다. 먼저 앞 숫자를 pop으로 버리고 front로 맨 앞에 있는 것을 가지고 push를 통해 큐의 맨 뒤에 다시 넣어준다. 그리고 옮긴 숫자는 pop으로 버려준다.

#include <iostream>
#include <queue>
using namespace std;

int main() {
	int n;
	queue <int> q;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		q.push(i);
	}

	while (q.size() > 1) {
		q.pop();	//버리기
		q.push(q.front());	//맨 위에 있는 숫자를 맨 아래로
		q.pop();	//옮긴 숫자를 제거
	}

	cout << q.front();

	return 0;
}

 

 

 

728x90