본문 바로가기
코딩테스트_백준풀이

요세푸스 문제 #1158 c++ 풀이

by wanna_dev 2023. 11. 10.

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

 

1158번: 요세푸스 문제

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

www.acmicpc.net

보자마자 queue를 이용해야겠다고 생각이 들었던 문제

 

넣고 2번 빼고 뺄때마다 다시 넣고 뽑고 출력하고를 반복하면 풀린다.

#include<iostream>
#include<queue>
#include<vector>

using namespace std;

int main() {
	int n, k;
	cin >> n >> k;

	queue<int> q;

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

	vector<int> v;
	while (!q.empty()) {
		int curr;
		for (int i = 1; i < k; i++) {
			curr = q.front();
			q.pop();
			q.push(curr);
		}

		curr = q.front();
		q.pop();
		v.push_back(curr);
		
		
	}
	cout << "<";
	for (int i = 0; i < v.size(); i++)
	{
		if (i == v.size() - 1)
			cout << v[i];
		else
			cout << v[i] << ", ";
	}
	cout << ">";
	return  0;
}

'코딩테스트_백준풀이' 카테고리의 다른 글

주짓수 #15724 c++ 풀이  (1) 2023.11.20
포도주 시식 #2156 c++ 풀이  (0) 2023.11.15
2Xn 타일링 #11726 c++ 풀이  (0) 2023.11.10
BABBA #9625 c++ 풀이  (0) 2023.11.10
스티커 #9465 c++ 풀이  (0) 2023.11.08