문제 설명
온라인 채점시스템에는 초등학생, 중고등학생, 대학생, 대학원생,
일반인, 군인, 프로그래머, 탑코더 등 아주 많은 사람들이 들어와 문제를 풀고 있는데,
실시간 채점 정보는 메뉴의 채점기록(Judge Status)을 통해 살펴볼 수 있다.
자! 여기서...잠깐..
같은 날 동시에 가입한 3명의 사람들이 온라인 채점시스템에 들어와 문제를 푸는 날짜가
매우 규칙적이라고 할 때, 다시 모두 함께 문제를 풀게 되는 그날은 언제일까?
입력
같은 날 동시에 가입한 인원 3명이 규칙적으로 방문하는,
방문 주기가 공백을 두고 입력된다. (단, 입력값은 100이하의 자연수이다.)
출력
3명이 다시 모두 함께 방문해 문제를 풀어보는 날(동시 가입/등업 후 며칠 후?)을 출력한다.
입력 예시
3 7 9
출력 예시
63
My code
a,b,c = map(int,input().split())
day = 1
while True:
if day%a==0 and day%b==0 and day%c==0:
break
day += 1
print(day)
Answer
a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)
d = 1
while d%a!=0 or d%b!=0 or d%c!=0 :
d += 1
print(d)
Code Review
3명의 사람들이 다시 모두 함께 문제를 풀게 되는 날은 각 사람들의 방문주기의 최소 공배수 입니다. 이는 다시 해석하면 3 명의 사람들이 다시 모두 함께 문제를 풀게 되는 날을 각각의 방문 주기로 나눴을 때 모두 나머지가 0이 되어야 한다는 것입니다. 따라서 반목문 안에서 만약 모두 나머지가 0이 된다면 break 를 이용하여 반목문을 빠져나가 그때까지 더한 day 를 출력하도록 해주었습니다.
모범 답안처럼 while 반복문이 만약 나머지가 모두 0이라면 종료되도록 조건식을 설정해주는 방법도 있습니다.
댓글