728x90
반응형
문제:
조세퍼스 문제는 다음과 같다.
1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(<=N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N,K)-조세퍼스 순열이라고 한다. 예를 들어 (7,3)-조세퍼스 순열은 <3, 6, 2, 7, 5, 1, 4> 이다.
N과 K가 주어지면 (N, K)-조세퍼스 순열을 구하는 프로그램을 작성하시오.
입력:
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1<=K<=N<=1,000)
출력:
예제와 같이 조세퍼스 순열을 출력한다.
풀이 방법:
값을 빼기 전에 미리 idx를 저장을 해두는 것이 중요하다. 값을 먼저 빼버리면 다음 순환 반복을 못하기 때문이다. 또한 빼준 다음에는 idx 를 1 감소해서 인덱스가 하나 줄었음을 나타낸다. 또한 값을 뺄 당시에 출력 예시와 동일하게 만들어야 하므로 끝 값에만 따로 케이스를 분류를 해두었다.
이 문제는 태그가 큐로 되어 있었는데 아마도 순환 큐를 이용해서 풀어야 하는 문제인 것 같다.
1 2 3 4 5 6 7 8 9 10 11 12 | a,b=map(int,input().split()) answer=list(range(1,a+1)) idx=-1 print("<",end="") while(len(answer)!=0): idx+=b idx=idx%(len(answer)) if len(answer)==1: print(answer.pop(idx),end=">") else: print(answer.pop(idx),end=", ") idx-=1 | cs |
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[BOJ]11051. 이항 계수 2 (0) | 2019.05.09 |
---|---|
[BOJ]11050. 이항 계수 1 (0) | 2019.05.08 |
[Programmers]Lv 3.디스크 컨트롤러 (2) | 2019.05.06 |
[BOJ]8979. 올림픽 (0) | 2019.05.05 |
[BOJ]1076. 저항 (0) | 2019.05.04 |