Search
Duplicate
🙆🏻‍♀️

요세푸스 문제

주차
17
문제번호
1158
언어
티어
실버
유형
자료구조
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

메모리

시간

1228 KB
64 ms

문제 풀이

요세푸스 문제는 주어진 수 n를 둥글게 나열한 뒤 k 번째의 수를 순서대로 출력하는 문제이다.
단순하게 큐를 사용하면 쉽게 풀수 있다.
큐에 n의 수를 순서대로 넣고 k - 1 만큼 다시 큐의 뒤에 넣어주고 k 번째 수를 pop 하면
순열을 구할 수 있다.

Code

#include <cstdio> #include <queue> using namespace std; int main() { int n,k; scanf("%d%d", &n, &k); queue <int> que; int i = 0; for (int i = 1; i <= n; i++) { que.push(i); } printf("<"); while (!que.empty()) { for (int i = 0; i < k - 1; i++) { int a = que.front(); que.push(a); que.pop(); } if (que.size() == 1) printf("%d", que.front()); else printf("%d, ", que.front()); que.pop(); } printf(">"); return 0; }
C++
복사