반응형
출처:https://www.acmicpc.net/problem/11866
문제
조세퍼스 문제는 다음과 같다.
1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 M(≤ N)이 주어진다. 이제 순서대로 M번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, M)-조세퍼스 순열이라고 한다. 예를 들어 (7, 3)-조세퍼스 순열은 <3, 6, 2, 7, 5, 1, 4>이다.
N과 M이 주어지면 (N,M)-조세퍼스 순열을 구하는 프로그램을 작성하시오.
문제 해결 과정:
-원형 큐를 만들어 해결
-앞에 두개를 복사하여 뒤로 삽입하고 pop한뒤 세번째 것은 pop해서 없앤다.
-이 과정을 큐가 빌때까지 반복한다.
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 | include<iostream> #include<queue> using namespace std; int main() { int N, M; queue<int> Q; cin >> N >> M; for (int i = 1; N >= i; i++) { Q.push(i); } cout << "<"; while (!Q.empty()) { for (int i = 0; i < M-1; i++) { Q.push(Q.front()); Q.pop(); } cout << Q.front(); Q.pop(); if (!Q.empty()) { cout << ", "; } } cout << ">" << endl; return 0; } | cs |
반응형
'알고리즘' 카테고리의 다른 글
<백준>1003번 피보나치 함수 (0) | 2017.12.05 |
---|---|
12_02 <백준>5639번 이진 검색 트리 (0) | 2017.12.02 |
11_30<백준>2957번 이진 탐색 트리 (0) | 2017.11.30 |
2017_11_29<백준> 2178번 미로 탐색 (0) | 2017.11.29 |
2017_11_28<백준>1991번 트리 순회 (1) | 2017.11.28 |