BOJ 11866: 요세푸스 문제 0

백윤재·2021년 11월 5일
0

BOJ

목록 보기
21/28
post-thumbnail

✔ 문제 링크

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++ 썼다가 계속 시간 초과 나와서 당황했다. 근무 뛰고 오니 정신이 오락가락한다,,

profile
SKKU 18.5

0개의 댓글