CS/알고리즘_문제풀이(파이썬)

알파윷 - A

Jedy_Kim 2021. 8. 9. 12:45
728x90

문제

현재 윷놀이 판에 말이 A, B, C, D로 총 4개 존재한다. 10번 윷을 던져 나온 결과를 미리 알고 있다. 결과는 도, 개, 걸, 윷, 모로 1, 2, 3, 4, 5 칸 이동하게 된다. 각각의 결과를 말 4개에 적절히 분배할 것이다. 분배한 결과를 적을때 편의상 말의 번호를 알파벳 대신 숫자로 표현한다. 다시 말해, A는 1, B는 2, C는 3, D는 4 로 바꿔적는다.

재귀호출을 이용하여 윷을 분배하는 모든 경우의 수를 확인함으로써 문제를 해결하시오. 즉, 1 1 1 1 1 1 1 1 1 1 부터 4 4 4 4 4 4 4 4 4 4 까지 모든 경우를 재귀호출을 활용하여 나열하고, 그 중 K번째 경우를 출력하는 프로그램을 작성하시오.

 

입력

첫 번째 줄에 자연수 K가 주어진다. (1 ≤ K ≤ 1,048,576)

 

출력

한 줄에 K번째 경우에 대해 출력한다. 각 숫자의 사이에는 공백이 들어간다.

 

입력 예시 1

1

출력 예시 1

1 1 1 1 1 1 1 1 1 1

입력 예시 2

16

출력 예시 2

1 1 1 1 1 1 1 1 4 4

입력 예시 3

438284

출력 예시 3

2 3 3 4 1 1 1 1 3 4

 

#코드

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
import sys
 
 
def getResult(x):
  global result, cur_cnt, K, flag
  if flag: return
  
  if x >= len(result):
    cur_cnt += 1
    if cur_cnt >= K:
      flag = True
      print(*result)
      return
  else:
    for i in range(15):
      result[x] = i
      getResult(x+1)
      
 
if __name__ == "__main__":
  input   = sys.stdin.readline
  result  = [0* 10
  cur_cnt = 0
  flag    = False
  
  K = int(input())
  
  getResult(0
  
 
 
cs

 

반응형

'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글

알파윷 - C  (0) 2021.08.09
알파윷 - B  (0) 2021.08.09
시험 감독  (0) 2021.08.09
사전순 부분문자열  (0) 2021.08.09
짝지어 제거하기  (0) 2021.08.09