문제 링크
문제 요약
그린-데-발트는 명의 지지자를 모으려 합니다. 각 지지자 는 일마다 특정 장소에 방문하며, 지난번 모든 지지자가 모인 날은 요일 였습니다. 모든 지지자가 다음번에 동시에 모이게 될 요일을 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()