@@@ 알고리즘/백준 스터디

백준24467(혼자 하는 윷놀이) - 해결

HTG 2022. 4. 25. 05:06
728x90

혼자 하는 윷놀이

 

문제

오전 4시, 민재는 윷놀이를 하고 싶어졌다. 하지만 다들 자는 시간이라 윷놀이를 같이 할 사람은 없었다.

민재는 윷놀이를 혼자 할 수 있는 방법을 생각해냈다.

혼자 하는 윷놀이에 적용되는 규칙은 다음과 같다.

  • 처음에 말은 윷판의 오른쪽 아래에 위치한다.
  • 열 번의 차례 안에 말 하나가 완주하면 민재가 승리한다.
  • 차례 한 번에는 윷가락 네 개를 던진 후:
    • 뒷면이 하나인 경우 말을 한 칸 전진시킨다.
    • 뒷면이 둘인 경우 말을 두 칸 전진시킨다.
    • 뒷면이 셋인 경우 말을 세 칸 전진시킨다.
    • 모두 뒷면인 경우 말을 네 칸 전진시킨 뒤, 윷을 추가로 던진다.
    • 모두 앞면인 경우 말을 다섯 칸 전진시킨 뒤, 윷을 추가로 던진다.
  • 윷판을 정해진 경로로 한 바퀴를 돌아 윷판의 오른쪽 아래에 도착한 뒤 한 칸 더 움직여야  완주할 수 있다.
  • 혼자 하나의 말로 하는 게임이므로 상대 말을 잡거나 자신의 말을 업는 경우는 없다.
  • 일반적인 윷놀이의 낙과 뒷도 등의 룰은 고려하지 않는다.

게임이 진행될 윷놀이판은 다음과 같다.

윷판에서 말이 갈 수 있는 길은 그림과 같이 네 가지이다.

빈 원으로 표시된 위치에 말이 놓이면 상대적으로 짧은 길로 가야한다. 그 위치에 놓이지 않는다면 상대적으로 먼 길로 가야 한다.

민재의 승리 여부를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄부터 민재가 윷가락을 어떻게 던졌는지 순서대로 주어진다.

각 줄에는 0과 1로 이루어진 길이가 4인 문자열이 주어진다. 0은 윷가락 뒷면, 1은 윷가락 앞면을 나타낸다.

민재는 완주하더라도 10턴을 모두 진행할 때까지 윷을 계속 던진다. 단, 50줄을 초과하는 입력은 주어지지 않는다.

마지막 입력은 도, 개, 걸 중 하나로 주어진다.

 

출력

민재가 혼자 하는 윷놀이에서 이겼다면 WIN, 졌다면 LOSE를 출력한다.


분기가 많은 문제라 분기를 생각해주면 되었다.

'''
혼자 하는 윷놀이

'''
import sys
input = sys.stdin.readline

now = 0
goal = 21
cnt = 10
flag_5 = False
goal_flag = False

while cnt:
    yut = input()
    
    zero_cnt = yut.count('0') 
    
    if zero_cnt == 0:
        now += 5
    elif zero_cnt == 4:
        now += zero_cnt
    else:
        now += zero_cnt
        cnt -= 1
    
    if now == 5:
        flag_5 = True
        goal = 17
    elif now == 8 and flag_5:
        goal = 12
    elif now == 10 and not flag_5:
        goal = 17
        
    if now >= goal:
        goal_flag = True
    
if goal_flag:
    print("WIN")
else:
    print("LOSE")