[백준] 11866번 - 요세푸스 문제0 C++

forunhyuck·2023년 6월 25일
post-thumbnail

🖥️입출력

입력:N,K (1부터 N까지의 숫자가 들어가고, K번째 값이 제거된다)

출력: 제거되어 나오는 수들을 수열로 표현하기


📖해결법

1부터 N 까지의 숫자들을 자료구조 queue에 넣는다.

while문 안에서 queue가 빌때 까지 밑에 적힌 방법을 반복한다.

  • K번째가 아니면 pop 한 후 다시 맨뒤로 push 해준다.

  • K번째 수라면 pop 해서 다른 배열이나 벡터에 순서대로 넣어준다.


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

int main() {
	int N, K;
	cin >> N >> K;
	queue<int>queue;
	vector<int>tmp;
	for (int i = 1; i <= N; i++) {
		queue.push(i);
	}

	while (!queue.empty()) {
		for (int i = 1; i < K; i++) {
			int num = queue.front();
			queue.pop();
			queue.push(num);

		}
		tmp.push_back(queue.front());
		queue.pop();
	}
	cout << "<";
	for (int i = 0; i < tmp.size(); i++) {
		if (tmp.size()-1 == i) {
			cout << tmp[i] << ">";
		}
		else {
			cout << tmp[i] << ", ";
		}
		
	}
}
profile
Just do it

0개의 댓글