BOJ 1158 :: 조세퍼스 문제
문제 링크 : https://www.acmicpc.net/problem/1158
살짝 실수를 했지만..,, 간만에 C로 Linked List 구현해보기 ㅇㅅㅇ
나의 코드
Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_1158/BOJ_1158.cpp
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | // 백준알고리즘 1158번 :: 조세퍼스 문제 #include<iostream> using namespace std; int N, M; struct node { int data; struct node *next = 0; struct node *prev = 0; }; struct node *head = 0; void addToDLL(int v) { for (int i = 1; i <= v; i++) { struct node *new_node = (struct node *)malloc(sizeof(struct node)); new_node->data = i; new_node->next = 0; new_node->prev = 0; if (head == 0) head = new_node; else { struct node *cur = head; while (cur->next != 0) { cur = cur->next; } cur->next = new_node; new_node->prev = cur; } if (i == v) { new_node->next = head; head->prev = new_node; } } return; } void print(int m) { cout << '<'; struct node *cur = head; struct node *prev = cur; for (int n = 0; n < N; n++) { for (int i = 1; i < m; i++) { cur = cur->next; } struct node *temp = cur->next; if (n == N - 1) { cout << cur->data << '>'; free(cur); return; } else cout << cur->data << ','<< ' '; cur->prev->next = cur->next; cur->next->prev = cur->prev; free(cur); cur = temp; } return; } int main(void) { cin >> N >> M; addToDLL(N); print(M); return 0; } | cs |
'Problem > ETC' 카테고리의 다른 글
[C/C++] BOJ 2493 :: 탑 (0) | 2019.03.21 |
---|---|
[SW Expert Academy] 1216. 회문2 (0) | 2019.03.06 |
[SW Expert Academy] 1215. 회문1 (0) | 2019.03.06 |
[C/C++] BOJ 5525 :: IOIOI (0) | 2019.03.05 |
[SW Expert Academy] 1213. String (0) | 2019.03.05 |