CodeUp(코드업) 풀이 (1092번)

이 포스팅은 codeup.kr(코드업)의 문제를 Python3로 풀고 정리한 내용입니다.


1092 : [기초-종합] 함께 문제 푸는 날1

문제 설명

koistudy.net 에는

초등학생, 중학생, 고등학생, 대학생, 대학원생, 일반인, 군인, 프로그래머, 탑코더 등 아주 많은 사람들이 들어와 문제를 풀고 있는데, 가입하고 Guest Board를 통해 정회원으로 등업이 되어야 문제를 풀어볼 수 있다.

매 시간의 실시간 채점 정보는 메뉴의 Judge Status 를 통해 살펴볼 수 있다.

자! 여기서…잠깐..

같은 날 동시에 가입한 3명의 사람들이 koistudy.net을 들어와 문제를 푸는 날짜가

매우 규칙적이라고 할 때,

다시 모두 함께 문제를 풀게 되는 그날은 언제일까?

예를 들어 3명이 같은날 가입/등업하고, 각각 3일 마다, 7일 마다, 9일 마다 한 번씩 들어온다면, 처음 가입하고 63일 만에 다시 3명이 함께 문제를 풀게 된다.

입력

같은 날 동시에 가입한 인원 3명이 규칙적으로 방문하는, 방문 주기가 공백을 두고 입력된다.

(단, 입력값은 100이하의 자연수이다.)

출력

3명이 다시 모두 함께 방문에 문제를 풀어보는 날(동시 가입/등업 후 며칠 후?) 을 출력한다.

입력 예시

3 7 9

출력 예시

63

내 풀이

1
2
3
4
5
6
7
8
9
10
11
12
a, b, c = input().split();
a = int(a);
b = int(b);
c = int(c);

day = 1;

while (day%a) != 0 or (day%b) != 0 or (day%c)!= 0:
day += 1;

# day %a == 0 and day %b == 0 and day %c == 0
print(day);
  • a, b, c로 나누어 떨어지는 최소공배수를 찾았을 때, 그날을 출력해준다.
1
2
if day %a == 0 and day %b == 0 and day %c == 0:
print(day);
  • 따라서, while문의 조건 부분에는 이와 반대되는 조건을 적어주고,
  • 아직 while문의 실행 부분으로 코드의 실행 흐름이 옮겨왔다는 것은
  • 그날을 찾지 못했다는 의미이므로 day를 1 증가시켜준 후, while문의 조건을 검사한다.

모범 답안

1
2
3
4
5
6
7
8
9
10
11
a,b,c=input().split()

x=int(a)
y=int(b)
z=int(c)

d=1
while (d%x!=0 or d%y!=0 or d%z!=0) :
d+=1

print(d)