SDJ( 수돈재 아님 ㅎ )

[C++] 1158 - 요세푸스 문제 본문

알고리즘/Backjoon

[C++] 1158 - 요세푸스 문제

ShinDongJun 2020. 1. 23. 12:46

문제 링크 : https://www.acmicpc.net/problem/1158

 

1158번: 요세푸스 문제

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

www.acmicpc.net

 

N이 작은 수치길래 Queue로 간단하게 구현했다.

하지만 1168 - 요세푸스 2같은 경우는 N이 크기 때문에 이러한 방법으로 풀 수 없다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<bits/stdc++.h>
 
#define endl '\n'
 
using namespace std;
 
queue<int> Q;
 
int main(void)
{
    int N, K, tmp;
    cin >> N >> K;
 
    for(int i = 1; i <= N; ++i)
        Q.push(i);
 
    cout << '<';
    while(Q.size() != 1)
    {
        for(int i = 0; i < K-1++i)
        {
            tmp = Q.front();
            Q.pop();
            Q.push(tmp);
        }
 
        cout << Q.front() << ", ";
        Q.pop();
    }
 
    cout << Q.front() << ">" << endl;
 
    return 0;
}

'알고리즘 > Backjoon' 카테고리의 다른 글

[C++] 9019 - DSLR  (0) 2020.01.23
[C++] 1780 - 종이의 개수  (0) 2020.01.23
[C++] 10815 - 숫자 카드  (0) 2020.01.23
[C++] 2805 - 나무 자르기  (0) 2020.01.23
[C++] 1920 - 수 찾기  (0) 2020.01.23
Comments