Fascination
article thumbnail
Published 2021. 9. 16. 10:54
[C++] BOJ 1158 : 요세푸스 문제 CODE/BOJ

[문제]

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

 

 

[문제 풀이]

- 인덱스에 해당되지 않는 사람은 다시 순환큐의 성질을 이용해서 맨 뒤에 삽입하여 재검사 할 수 있도록 함

 

 

[코드]

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

int main(){
    int n,k;
    scanf("%d %d",&n,&k);
    queue<int> q;
    for(int i=0;i<n;i++){
        q.push(i+1);
    }

    cout<<"<";

    int top=0,i=0;

    while(!q.empty()) {
        if (top % k != (k-1)){
            q.push(q.front());
            q.pop();
        }
        else {
            cout << q.front();
            if(i<n-1) {
                cout<<", ";
                i++;
            }
            q.pop();
        }
        top++;
    }
    cout<<">";

    return 0;
}

 

 

[채점 결과]

* 틀린 이유가 나머지 계산에서 인덱스를 넣어야하는데 예제 인덱스 3을 넣어서 ..~~

'CODE > BOJ' 카테고리의 다른 글

[C++] BOJ 2959 : 거북이  (0) 2021.09.17
[C++] BOJ 2752 : 세수정렬  (0) 2021.09.17
[C++] BOJ 11279 : 최대힙  (0) 2021.09.16
[C++] BOJ 12605 : 단어순서 뒤집기  (0) 2021.09.15
[C++] BOJ 17608 : 막대기  (0) 2021.09.15
profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!