끄적끄적 코딩
article thumbnail
Published 2019. 9. 4. 12:13
[C++] 백준 2164번 카드2 알고리즘

큐 문제입니다.

1. 1~n까지의 수를 큐에 넣습니다.
2. q.pop(), 먼저 들어온 것을 제거합니다.
3. q.push(q.front()), 앞에 있는 것을 뒤에 넣습니다.
4. q.pop(), 앞에 있는 것을 제거합니다.(뒤로 옮긴 상태)
5. q.size()가 1이 될때까지 2~4 반복
6. q.front() 출력

 

#include <iostream>
#include <cstring>
#include <queue>
#include <string>
#include <algorithm>
using namespace std;

int main(int argc, char *argv[])
{
	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() << endl;

	return 0;
}

검색 태그