본문 바로가기

BOJ/Python

[BOJ/백준] 33046 - Alea Iacta Est (Python)

문제

문제링크

주사위 눈의 합이 가르키는 사람은 다음과 같이 정의된다.

  •  1: 주사위를 굴린 사람
  • 이후 반시계방향으로 수를 세어 나가며 다음 사람을 가리킴
  • 마지막 플레이어까지 수를 세어 나갔으면 다시 주사위를 굴린 사람부터 수를 셈

두 개의 주사위를 두 번 굴린 결과가 주어졌을 때, 몇 번 플레이어가 진동이 되는가?

 

풀이

주사위를 던졌을 때 던진 사람을 포함해서 그 합만큼 반시계방향으로 세야 하므로

먼저 (현재 플레이어 번호-1)+(주사위 수의 합)을 구한다.

마지막 플레이어까지 셌으면 1번 플레이어로 돌아가서 다시 세므로 4로 나눈 나머지가 다음에 주사위를 던질 플레이어다.

중간 계산 과정에서는 상관없지만 마지막 플레이어를 구할 때 위 방식대로 계산하면 4번 플레이어를 구해야 할 때 0번 플레이어라고 나온다.

따라서 마지막 플레이어를 출력할 때 if문 처리를 하여 플레이어 번호가 0이 아니면 그대로, 0이면 4를 출력하면 된다.

 

코드

a,b=map(int, input().split())
c,d=map(int, input().split())

player2=((1-1)+(a+b))%4
player3=((player2-1)+(c+d))%4
print(player3 if player3!=0 else 4)