본문 바로가기
알고리즘 기초시절

백준 c++백준 11866번 요세푸스 문제

by 뜨거운 개발자 2023. 1. 5.
#include <iostream>
#include <queue>
using namespace std;
int main(){
    queue <int> people;
    int n, k, removedPeopleNum = 0;
    int current = 1;
    cin >> n >> k;
    for(int i = 1; i<=n; i++) people.push(i);
    cout << "<";
    while(removedPeopleNum!=n){
        while(1){
            if(current++ % k == 0){
                cout << people.front();
                people.pop();
                removedPeopleNum++;
                break;
            }
            else{
                people.push(people.front());
                people.pop();
            }
        }
        if(removedPeopleNum != n) cout << ", ";
    }
    cout << ">";
}

아직 큐가 익숙하지 않아서 다른 코드를 봤는데 뒤로 넘기는 방법에 대해서 알았다. 터트리고 뒤로 밀어버리면 되는 것 이었다. 다음에 큐를 활용하는 문제는 직접 해결해보고 싶다.

이 글은 코딩 꼬꼬마 시절에 푼 문제를 보관한 글로 네이버에 저장해둔 글을 옮긴 글입니다.
혹시나 참고하시는 부분에 이상한 부분이나 질문이 생긴다면 남겨주시면 친절히 답변 드리겠습니다.

728x90