백준 문제풀이

1158번 : 요세푸스 문제

하다블 2022. 3. 31. 18:55
반응형

문제는 다음과 같습니다.

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

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

풀이 코드는 다음과 같습니다.

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

int main() {
	int N, K;
	cin >> N >> K;
	queue<int> C;
	for (int i{0}; i < N; i++) {
		C.push(i + 1);
	}
	cout << "<";
	while (C.size() - 1) {
		for (int i{0}; i < K - 1; i++) {
			C.push(C.front());
			C.pop();
		}
		cout << C.front() << ", ";
		C.pop();
	}
	cout << C.front() << ">";
	return 0;
}

큐를 직접 구현하지 않아도 STL을 사용하여 큐를 사용할 수 있으며, 주어진 만큼 돌려 맨 앞에 값을 빼는 방법으로 구현할 수 있습니다.

 

반응형