프로그래밍/백준

[백준알고리즘] 백준 25175 파이썬 - 두~~부 두부 두부

매 석 2022. 10. 8. 16:38
반응형

 

25175번: 두~~부 두부 두부

첫 번째 줄에 게임을 하는 사람의 수 $N$ ($1 \le N \le 100\,000$), 현재 차례인 사람의 번호 $M$ ($1 \le M \le N$), 부른 두부의 모 수를 나타내는 정수 $K$ ($-100\,000 \le K \le 100\,000$)가 주어진다.

www.acmicpc.net

문제

시험이 끝난 준서는 친구들과 술을 마시고 있다.

두~~부 두부 두부 으쌰 으쌰 으쌰 두~~부 두부 두부 으쌰 으쌰 으쌰

어디선가 어깨를 주체할 수 없는 신명 나는 노랫소리가 들려오기 시작한다. 친구들은 홀린 듯 어깨춤을 추며 노래를 따라부르기 시작한다.

준서를 포함하여 N명의 사람이 함께 노래를 부르며 게임을 진행하고 있다. 이름처럼 여러 글자를 말하기 힘들어진 사람들은 1~N번으로 서로를 구분한다. 화목한 친구들은 반시계방향으로 번호가 증가하도록 둥글게 앉아있다.
이때 노래를 부르던 M번 사람이 두부 K모를 외쳤다.
또또 나만 모르는 술 게임을 하는 걸 본 준서는 옆자리 준우 형에게 몰래 게임의 룰을 물어보았다.

  • 자신의 차례인 사람은 하나의 정수 K를 외친다.
  • 번호를 부른 사람이 기준인 3모가 된다.
  • 반시계방향으로 옆 사람의 모 수는 1이 증가하고, 시계방향으로 1이 감소한다.
  • 모 수가 K인 사람이 다음 차례가 되어 게임을 반복한다.
  • 만약 자신의 차례가 아닌데 K를 외치거나, 자신의 차례에 K를 부르지 않으면 술을 마셔야 한다.

설명을 들었지만 술에 취한 준서는 너무나도 어지러워 다음 차례가 누구인지 도저히 모르겠다. 준서가 마시면서 배우는 술 게임에 당하지 않도록 다음 차례인 사람의 번호를 알려주자!

 

문제풀이

import math
N,M,K = map(int,input().split())
Y = K-3
X = M+Y
if(X%N>0):
    print(X%N)
elif(X%N==0):
    print(N)

- 이 문제의 특이점은 음수의 나눗셈을 진행하여 나머지를 구하는 것이다.

EX) -2 % 5 =3 -> -2 / 5 -> 몫 : -1, 나머지:3

- 즉 음수 나눗셈의 나머지는 양수이므로, if문을 (X%N>0)으로 음수, 양수 모두 가능하다.