Backjoon Online Judge
"11866번 : 조세퍼스 문제 0" 문제입니다.
문제 링크 : https://www.acmicpc.net/problem/11866
하나씩 검사하여 제거하거나 다음 순서로 돌리기 위해 큐를 이용하였습니다.
- 1부터 시작하여 M의 배수가 될 때 큐의 가장 앞에 있는 문자를 제거합니다.
- M의 배수가 아닌 경우 큐의 가장 앞에 있는 문자를 큐의 가장 뒤로 보냅니다.
- 큐가 비게되면 종료합니다.
코드는 C++로 작성하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <cstdio> #include <queue> using namespace std; int main() { int N, M; queue<int> q; int start = 0; scanf("%d %d", &N, &M); for (int i = 1; i <= N; i++) q.push(i); printf("<"); while (!q.empty()) { start++; if (start % M == 0) if(q.size() == 1) printf("%d", q.front()); else printf("%d, ", q.front()); else q.push(q.front()); q.pop(); } printf(">"); return 0; } |
|