반응형
문제
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 |
댓글