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 = [0, 5, 10, 15, 20, 50, 30, 35, 40, 45, 100, 55, 60, 65, 70, 75, 80, 85, 90, 95, 500, 1000, 275, 250, 300, 150, 175, 150, 125, 350, 400]
temp = [
[5, 22, 23, 24, 25, 26],
[10, 27, 28, 24, 29, 30],
[22, 23, 24, 25, 26, 15],
[23, 24, 25, 26, 15, 16],
[24, 29, 30, 20, 21, 21],
[25, 26, 15, 16, 17, 18],
[26, 15, 16, 17, 18, 19],
[27, 28, 24, 29, 30, 20],
[28, 24, 29, 30, 20, 21],
[29, 30, 20, 21, 21, 21],
[30, 20, 21, 21, 21, 21]
]
moving = [[-1] * 6 for _ in range(35)]
for i in range(11):
for j in range(1, 6):
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 |
반응형