본문 바로가기
알고리즘/백준

백준 1158(요세푸스) c++

by Jo_Wick 2023. 4. 21.
반응형

문제

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

 

1158번: 요세푸스 문제

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

www.acmicpc.net

문제 풀이

문제를 를 이용하여 생각을 해보면,

N만큼 오름차순으로 큐에 숫자가 들어가 있다. 그리고 K 번째의 숫자를 제거하는게 문제이다.

 

그러면 K만큼 큐에서 pop을 함과 동시에 push를 해주면 문제가 해결이 된다.

 

전체 코드

#include <bits/stdc++.h>

using namespace std;

int main(){

	ios_base::sync_with_stdio(0);
	cin.tie(0);

	int N, K;

	cin >> N >> K;

	queue<int> input;

	for(register int i = 1; i <= N; i++){
		input.push(i);
	}


	cout << '<';


	while(input.size() != 1){

		for(register int i = 0; i < K - 1; i++){
			input.push(input.front());
			input.pop();
		}

		cout << input.front() << ", ";
		input.pop();

	}

	cout << input.front() << ">\n";

	return 0;

}
반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 11727번 (2xn 타일링 2) c++  (0) 2023.06.28
백준 11726번 (2xn 타일링) c++  (0) 2023.06.28
백준 1874번(스택 수열) c++  (0) 2023.04.18
백준 에디터 (1406번) c++  (0) 2023.04.18
백준 9012번(괄호)  (0) 2023.04.17

댓글