BOJ 11866: 요세푸스 문제 0
✔ 문제 링크
✔ 문제해결전략
- Queue 활용
✔ 해결과정
- k-1번 dequeue, enqueue 반복하면 k 번째 수가 큐의 맨 앞에 있으므로 출력하고 pop 하면 된다. 이 과정 큐가 빌 때까지 반복
✔ 정답 Code
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, k;
queue<int> q;
cin >> n >> k;
for(int i=1;i<=n;i++) {
q.push(i);
}
cout << '<';
while(!q.empty()) {
for(int i=1;i<k;i++) {
if(k!=1) {
int bak = q.front();
q.pop();
q.push(bak);
}
}
if(q.size()!=1) {
cout << q.front() << ", ";
}
else {
cout << q.front() << '>';
}
q.pop();
}
}
✔ Comment
for문 증가식에 k++ 썼다가 계속 시간 초과 나와서 당황했다. 근무 뛰고 오니 정신이 오락가락한다,,
Author And Source
이 문제에 관하여(BOJ 11866: 요세푸스 문제 0), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@whyjyj0312/BOJ-11866-요세푸스-문제-0저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)