[BOJ / C++] 1158번 요세푸스 문제

황승환·2021년 7월 11일
0

C++

목록 보기
3/65


기본적인 원형큐 문제이다. queue STL을 사용하여 풀었다.

  • queue는 Last In First Out이다.
  • push()를 하게 되면 뒤로 들어가게 되고, pop()을 하게 되면 가장 앞의 원소를 지운다.
  • 원형 queue는 앞과 뒤가 연결된 원형이라고 생각할 수 있다.
  • push(a): a를 가장 뒤에 넣는다.
  • pop(): 가장 앞의 원소를 지운다.
  • front(): 가장 앞에 있는 원소를 반환한다.
  • back(): 가장 뒤에 있는 원소를 반환한다.
  • empty(): 큐가 비어있다면 true, 비어있지 않다면 false를 반환한다.
  • size(): 큐의 크기를 반환한다.

Code

#include <iostream>
#include <queue>
using namespace std;

int n, k;
queue<int> rq;

void Input(){
    cin>>n>>k;
    for(int i=1; i<=n; i++){
        rq.push(i);
    }
}

void Solution(){
    cout<<"<";
    while(!rq.empty()){
        for(int i=0; i<k-1; i++){
            rq.push(rq.front());
            rq.pop();
        }
        cout<<rq.front();
        rq.pop();
        if(!rq.empty()){
            cout<<", ";
        }
        
    }
    cout<<">"<<endl;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    Input();
    Solution();
    return 0;
}

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글