https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
이 문제는 queue를 이용하여 해결할 수 있었다.
queue에 N까지의 숫자를 1부터 삽입하여 queue의 front는 1 back은 N으로 한다.
이후 queue가 비어있지 않을 때 까지 반복을 수행한다. 이때 queue에서 K 만큼 앞에 있는 것을 뒤에 빼고 넣는 과정을 반복한다.
반복을 빠져 나오면 queue의 front에 있는 숫자를 출력하면 K 번째 숫자가 된다.
#include<iostream>
#include<queue>
using namespace std;
int main(){
int N, K;
cin>>N>>K;
queue<int> q;
for(int i = 1;i<=N;i++)
q.push(i);
cout<<"<";
while(!q.empty()){
for(int i = 1;i<K;i++){
q.push(q.front());
q.pop();
}
cout<<q.front();
if(q.size() != 1) cout<<", ";
q.pop();
}
cout<<">";
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 2] 1012번 유기농 배추 (0) | 2023.10.20 |
---|---|
[Silver 3] 1003번 피보나치 함수 (0) | 2023.10.19 |
[Silver 5] 11650번 좌표 정렬하기 (0) | 2023.10.13 |
[Bronze 1] 11050번 이항 계수 1 (0) | 2023.10.13 |
[Silver 4] 10866번 덱 (0) | 2023.10.13 |