문제 링크 : https://www.acmicpc.net/problem/1158
연결리스트를 사용하여 푸는 문제 입니다.
소스코드 :
연결리스트를 사용하여 푸는 문제 입니다.
소스코드 :
| 
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 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 | 
#include <iostream> 
#include <vector> 
#include <list> 
#include <string> 
using namespace std; 
int main() { 
    cin.tie(0); 
    ios_base::sync_with_stdio(false); 
    int n, k; 
    cin >> n >> k; 
    list<int> survivor; 
    for (int i = 0; i < n; i++) { 
        survivor.push_back(i + 1); 
    } 
    list<int>::iterator kill = survivor.begin(); 
    cout << "<"; 
    while (n > 0) { 
        for (int i = 0; i < k - 1; i++) { 
            ++kill; 
            if (kill == survivor.end()) 
                kill = survivor.begin(); 
        } 
        cout << *kill; 
        kill = survivor.erase(kill); 
        if (kill == survivor.end()) 
            kill = survivor.begin(); 
        n--; 
        if (n != 0) { 
            cout << ", "; 
        } 
    } 
    cout << ">"; 
} | cs | 
댓글
댓글 쓰기