본문 바로가기
문제 풀이/백준(BOJ)

[C++] 백준 1158번 : 요세푸스 문제

by 희조당 2021. 9. 24.
728x90

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

 

1158번: 요세푸스 문제

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

www.acmicpc.net


 문제 풀이

https://codinghejow.tistory.com/91와 같은 문제이다!

 느낀 점

이번에 코테 준비를 하면서 다시 풀어봤던 문제이다. 이번에 한번 정리함으로써 큐에 대한 이해도가 확실하게 향상된 것 같다.

 코드

#include <iostream>
#include <queue>

using namespace std;

int n, k;
queue<int> q;

void func(int n, int k) {
	for (int i = 1; i <= n;i++) {
		q.push(i);
	}
	cout << "<";
	while (!q.empty()) {
		for (int i = 0; i < k - 1;i++) {
			q.push(q.front());
			q.pop();
		}
		cout << q.front();
		q.pop();
		if (!q.empty()) {
			cout << ", ";
		}
	}
	cout << ">" << "\n";
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> n >> k;
	func(n, k);
}

댓글