PS/Baekjoon Online Judge

[백준 11866] 요세푸스 문제 0 [C++]

kimyoungrok 2021. 7. 25. 14:14

백준 - 11866


풀이

C로 풀기에는 난이도에 비해 번거로움이 많아 C++로 풀이했다.

기본적인 pop, push, empty, front를 사용하는 문제이기 때문에 C++에 이미 구현된 queue 라이브러리를 사용하면 된다.

 

  • 순서(cnt)가 K로 나누었을 때 나머지가 존재하면, queue의 앞에있는 수를 제거하고, 뒤에 추가해준다.
  • 아니라면, queue의 앞에있는 수를 출력해주고, pop하여, 마지막 요소인지 아닌지에 따라 출력 형식을 달리해준다.

소스코드

#include <iostream>
#include <queue>
using namespace std;
int main(){
    int N, K, cnt = 1;
    cin >> N >> K;
    queue<int> Q;
    for (int i = 1; i <= N; i++)
        Q.push(i);
		
    cout << "<";
    while (!Q.empty()){
        if (cnt % K){
            int n = Q.front();
            Q.pop();
            Q.push(n);
		}else {
            cout << Q.front();
            Q.pop();
            cout << (Q.empty() ? ">" : ", ");
        }
        cnt++;
    }
}

출처

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 2775] 부녀회장이 될테야 [C]  (0) 2021.07.25
[백준 2231] 분해합 [C]  (0) 2021.07.25
[백준 9663] N-Queen [C]  (0) 2021.07.24
[백준 2292] 벌집 [C]  (0) 2021.07.23
[백준 1712] 손익분기점 [C]  (0) 2021.07.23