문제 링크

문제 요약

그린-데-발트는 명의 지지자를 모으려 합니다. 각 지지자 일마다 특정 장소에 방문하며, 지난번 모든 지지자가 모인 날은 요일 였습니다. 모든 지지자가 다음번에 동시에 모이게 될 요일을 1부터 7까지의 숫자로 출력하는 문제입니다. (요일은 1부터 7까지의 숫자로 표현됩니다.)

풀이

문제는 모든 지지자들이 다시 동시에 모이는 날이 언제인지를 묻습니다. 각 지지자가 일마다 방문하므로, 모든 지지자가 동시에 모이려면 모든 의 공배수만큼의 시간이 흘러야 합니다. 이 중 가장 짧은 시간을 찾아야 하므로, LCM (최소공배수)를 구해야 합니다.

정답 코드

def gcd(a, b): return gcd(b, a % b) if b > 0 else a
def lcm(a, b): return a * b // gcd(a, b)
 
 
def solve():
  n, weekday = map(int, input().split())
  weekday -= 1
 
  l = [*map(int, input().split())]
  period = l[0]
 
  for i in range(1, n):
    period = lcm(period, l[i])
  
  print((weekday + period) % 7 + 1)
 
 
if __name__ == "__main__":
  tc = 1
  for t in range(1, tc+1):
    ret = solve()
 

연관 페이지

참고 문헌 / 사이트