본문 바로가기
SWE/코테

[성실코딩 17일차] 백준 #11866 조세퍼스 문제0

by S나라라2 2018. 11. 4.
반응형

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;
}
반응형