https://www.acmicpc.net/problem/17825
17825번: 주사위 윷놀이
주사위 윷놀이는 다음과 같은 게임판에서 하는 게임이다. 처음에는 시작 칸에 말 4개가 있다. 말은 게임판에 그려진 화살표의 방향대로만 이동할 수 있다. 말이 파란색 칸에서 이동을 시작하면 파란색 화살표를 타야 하고, 이동하는 도중이거나 파란색이 아닌 칸에서 이동을 시작하면 빨간색 화살표를 타야 한다. 말이 도착 칸으로 이동하면 주사위에 나온 수와 관계 없이 이동을 마친다. 게임은 10개의 턴으로 이루어진다. 매 턴마다 1부터 5까지 한 면에 하나씩 적혀있
www.acmicpc.net
내 풀이:
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
|
def game(idx, horses, score):
global ans
check_set = set()
start_end = 0
for i in range(4):
location = table[horses[i][0]][horses[i][1]]
if location == 0 or location == 1000:
start_end += 1
else:
check_set.add(location)
if len(check_set) + start_end < 4:
return
if idx == 10:
ans = max(ans, score%1000)
return
for i in range(4):
if i > 0 and horses[i-1][1] == 0:
continue
if table[horses[i][0]][horses[i][1]] == 1000:
continue
prev = (horses[i][0], horses[i][1])
horses[i][1] += dice[idx]
if table[horses[i][0]][horses[i][1]] == 10:
horses[i][0] = 1
elif table[horses[i][0]][horses[i][1]] == 20:
horses[i][0] = 2
elif table[horses[i][0]][horses[i][1]] == 30:
horses[i][0] = 3
game(idx+1, horses, score + table[horses[i][0]][horses[i][1]])
horses[i][0], horses[i][1] = prev
dice = list(map(int,input().split()))
table = []
table.append([i for i in range(0, 41, 2)] + [1000] * 5)
table.append([0] * 5 + [10, 13, 1016, 19, 25, 1030, 35, 40] + [1000] * 5)
table.append([0] * 10 + [20, 1022, 1024, 25, 1030, 35, 40] + [1000] * 5)
table.append([0] * 15 + [30, 1028, 27, 1026, 25, 1030, 35, 40] + [1000] * 5)
horses = [[0, 0] for _ in range(4)]
ans = 0
game(0, horses, 0)
print(ans)
|
Python3, 132ms
시뮬레이션 구현 문제 중 체감상 가장 어려웠던 문제이다. 이유는 지름길을 탔을 때와 타지 않은 경로상에 같은 수가 존재하여 구분하기 매우 어렵다. 이 문제에서는 같은 수가 3번 이상 등장하진 않기 때문에 중복되는 수에 1000을 더하여 처리해주었다. 이후 답을 출력할 때 1000으로 나눈 나머지를 출력하면 문제를 다소 쉽게 해결할 수 있다.
파이썬으로 풀어보는 백준 13460번: 구슬 탈출 2 (삼성 SW 역량 테스트 기출 문제) (0) | 2020.04.05 |
---|---|
파이썬으로 풀어보는 백준 3954번: Brainf**k 인터프리터 (삼성 A형 기출 문제) (0) | 2020.04.03 |
파이썬으로 풀어보는 백준 17472번: 다리 만들기 2 (삼성 A형 기출 문제) (0) | 2020.04.03 |
파이썬을 풀어보는 백준 5373번: 큐빙 (삼성 A형 기출 문제) (0) | 2020.03.29 |
SW Expert Academy 특이한 자석 (0) | 2020.02.18 |
댓글 영역