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

알파윷 - C

Jedy_Kim 2021. 8. 9. 14:26
728x90

문제

위와 같은 윷놀이 판에 말 1개가 이동한다. 윷놀이 판에 존재하는 각 칸에는 점수가 적혀있다. 윷을 N번 던져서 이동해야할 칸의 수가 각각 주어질때, 이동하면서 밟게되는 칸의 점수를 모두 출력해보자.

말의 이동 시작점은 Start 이며, 도착지점은 End 이다. 만약, 이동해야하는 칸이 도착 지점을 넘어서거나, 도착 지점을 밟았을 경우 도착 지점의 점수를 얻고 해당 말은 판에서 제외된다. 제외된 말은 더 이상 이동할 수 없다. 예를 들어, 50점과 75점 칸을 밟을 경우, 화살표가 가리키는 방향으로 움직여야한다. 기본적으로 흰색 칸이 있는 경로로 이동한다.

 

입력

첫 번째 줄에 윷을 던진 횟수 N이 주어진다. 두 번째 줄에 이동하는 칸의 개수 N개가 공백을 통해 구분하여 주어진다.(1 ≤ N ≤ 10, 1 ≤ 이동하는 칸의 수 ≤ 5)

 

출력

첫 번째 줄에 이동하면서 밟게되는 칸의 점수를 공백을 통해 구분하여 모두 출력한다.

 

입력 예제 1

5

2 3 1 2 4

출력 예제 1

10 50 275 300 1000

입력 예제 2

5

5 5 5 5 5

출력 예제 2

50 175 95 1000

 

#코드

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
import sys 
 
 
if __name__ == "__main__":
  input   = sys.stdin.readline
  
  arr    = [0510152050303540451005560657075808590955001000275250300150175150125350400]
  
  temp = [
   [52223242526],
   [102728242930],
   [222324252615],
   [232425261516],
   [242930202121],
   [252615161718],
   [261516171819],
   [272824293020],
   [282429302021],
   [293020212121],
   [302021212121]
  ]
  
  moving = [[-1* 6 for _ in range(35)]
  for i in range(11):
    for j in range(16):
      moving[temp[i][0]][j] = temp[i][j]
  
  
  N       = int(input())
  get_arr = list(map(int, input().split()))
  
  current = 0
  for i in get_arr:
    for j in range(11):
      flag = False
      if current == temp[j][0]:
        flag = True
        break
      
    if flag:
      current = moving[current][i]
    else:
      current += i
      if current >= 21: current = 21
      
    print(arr[current], end=' ')
    
    if current == 21: break
cs

 

반응형

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

알파윷 - D  (0) 2021.08.11
퇴사  (0) 2021.08.10
알파윷 - B  (0) 2021.08.09
알파윷 - A  (0) 2021.08.09
시험 감독  (0) 2021.08.09