구현, 시뮬레이션 문제였다.
처음에는 '어떻게 윷판 위 현재 위치를 나타내지?' 고민했는데, 4가지 루트가 있다는 걸 보고 그걸 이용해서 문제를 풀었다.
- 현재 어떤 루트로 가고 있는지 나타내는 course, 말의 위치를 idx로 두었다.
위 그림 순서와는 다르게, 나는 빙~ 돌아가는 걸(위 그림에서 4번) 0, 첫번째 갈림길에서 꺾이는 걸(위 그림에서 3번) 1, 젤 빠른 길(위 그림에서 1번)을 2, 위 그림에서 2번을 3으로 뒀다.
- 그 뒤에 윷을 던져서 앞으로 가는 칸수에 따라서 idx를 바꿔준다.
이때 주의점은 다 앞면이거나 다 뒷면이면, 윷 던질 기회를 한번 더 준다는 것! 그래서 while을 이용해서 처리했다. - 지름길을 만나면 지름길로 간다.
위에서 바꾼 idx를 이용해서 지름길로 갈 수 있는지 판단하고, 갈 수 있으면 간다.
특이한 점은 첫번째 갈림길에서 꺾여야 젤 빠른 길로 갈 수 있다는 거..!
말의 위치는 코스를 바꾸면, 0으로 바꿔줬다. (거기에서부터 도착점까지 가는 칸수를 고려해서) - 10턴 안에 각 코스 별로 도착점까지 가는 칸수+1이 되면 승리한 걸로 봤다.
코드 👩💻
'''
24467: 혼자 하는 윳놀이
https://www.acmicpc.net/problem/24467
'''
import sys
input = sys.stdin.readline
course = 0
idx = 0
isWin = False
for i in range(10):
yuk = sum(list(map(int, input().rstrip())))
while yuk == 0 or yuk == 4:
# 모두 뒷면: 4칸 -> 윷 다시
if yuk == 0:
idx += 4
# 모두 앞면: 5칸 -> 윷 다시
elif yuk == 4:
idx += 5
yuk = sum(list(map(int, input().rstrip())))
if yuk == 3: # 뒷면 하나: 1칸
idx += 1
elif yuk == 2: # 뒷면 2: 2칸
idx += 2
elif yuk == 1: # 뒷면 3: 3칸
idx += 3
# 0번으로 가다가
if course == 0:
# 1번 갈림길 만나면
if idx == 5:
course = 1
idx = 0
# 3번 갈림길 만나면
elif idx == 10:
course = 3
idx = 0
# 도착
elif idx >= 21:
isWin = True
# 1번으로 가다가
elif course == 1:
# 2번 갈림길 만나면
if idx == 3:
course = 2
idx = 0
# 도착
elif idx >= 12:
isWin = True
# 2번으로 가다가
elif course == 2:
# 도착
if idx >= 4:
isWin = True
# 3번으로 가다가
elif course == 3:
# 도착
if idx >= 7:
isWin = True
# 승리 여부
if isWin:
print('WIN')
else:
print('LOSE')
728x90
'즐거운 PS 👩💻🥰' 카테고리의 다른 글
[백준/파이썬] 1148: 단어 만들기 (0) | 2022.05.03 |
---|---|
[백준/파이썬] 18235: 지금 만나러 갑니다 (0) | 2022.04.21 |
[백준/파이썬] 7983: 내일 할거야 (0) | 2022.04.13 |
[백준/파이썬] 2437: 저울 (0) | 2022.04.11 |
[백준/파이썬] 1082: 방 번호 (0) | 2022.04.09 |