반응형
11월2일 금요일이 17일차여야하는데 부산 학술대회 다녀오고 노느라고 못했다ㅜㅜ
그러므로 오늘 일요일인데 17차 메꾸고잇당 허허
원래의 나였으면 이 문제를 풀 수 있는 규칙성이 있을까 엄청 고민했을 것 같은데
귀찮아서인지,,,, 시간제한도 2초나 되니까 그냥 반복적으로 컴퓨터 연산에 맡겼다.
숫자를 출력할 때는 visited 1 표시해서 다시 방문하지 않고 넘어가도록 했다.
다른 사람 코드보니까 대부분 두 개 중 하나 방식으로 푼 것 같다.
1. queue를 구현해서 M-1번째까지는 모두 pop하고 queue 뒤에 다시 push 하는 방법
2. sll로 구현해서 출력하면 해당 노드를 delete하는 방법
내 방식 포함해서 대부분 방식들이 비슷한 시간 복잡도를 가질 것 같다.
그러므로 코드 안짜봐야징
#include <iostream> using namespace std; int poped_number[1001]; int n, m; int pop_number = 0; int rotate_cnt = 0; int cur_number = 0; int main() { cin >> n >> m; pop_number = n; cout << "<"; while (pop_number !=0 ) // 모든 수를 pop할 때까지 { while (rotate_cnt < m) { cur_number++; if (cur_number>n) { cur_number = 1; } if(poped_number[cur_number]!=0) { continue; } else { rotate_cnt++; } } if(pop_number==1) { cout << cur_number; poped_number[cur_number] = 1; pop_number--; rotate_cnt = 0; } else { cout << cur_number << ", "; poped_number[cur_number] = 1; pop_number--; rotate_cnt = 0; } } cout << ">"; return 0; }
반응형