주소 : https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
소스 코드 :
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int N, K;
queue<int> q;
cin >> N >> K;
for (int i = 1; N >= i; i++) {
q.push(i);
}
cout << "<";
while (!q.empty()) {
for (int i = 0; i < K - 1; i++) {
q.push(q.front());
q.pop();
}
cout << q.front();
q.pop();
if (!q.empty()) {
cout << ", ";
}
}
cout << ">" << endl;
return 0;
}
마무리 : 이 문제에서 N명의 사람이 원을 이루면서 앉아있고, K번째 사람을 제거하면서 출력하는 문제로 원형 큐를 사용해야한다는 것을 알 수 있다. 그래서 stl를 이용하여 큐를 사용하고 push, pop을 하면서 특정 자리 숫자 번째에 숫자를 뺀다.
'백준 > C++' 카테고리의 다른 글
백준 1920번 : 수 찾기 [C++] (0) | 2022.08.11 |
---|---|
백준 1018번 : 체스판 다시 칠하기 [C++] (0) | 2022.08.11 |
백준 11650번 : 좌표 정렬하기 [C++] (0) | 2022.08.10 |
백준 10814번 : 나이순 정렬 [C++] (0) | 2022.08.09 |
백준 7568번 : 덩치 [C++] (0) | 2022.08.09 |