CodeUp : 함께 문제 푸는 날 [1092]

재현·2021년 1월 30일
0

분류 : 단순반복문, 최대공약수, 최소공배수

1. 문제


온라인 채점시스템에는 초등학생, 중고등학생, 대학생, 대학원생,
일반인, 군인, 프로그래머, 탑코더 등 아주 많은 사람들이 들어와 문제를 풀고 있는데,

실시간 채점 정보는 메뉴의 채점기록(Judge Status)을 통해 살펴볼 수 있다.

자! 여기서...잠깐..
같은 날 동시에 가입한 3명의 사람들이 온라인 채점시스템에 들어와 문제를 푸는 날짜가
매우 규칙적이라고 할 때, 다시 모두 함께 문제를 풀게 되는 그날은 언제일까?

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

출처 : https://codeup.kr/problem.php?id=1092

2. 아이디어


  • 최소공배수 구하기
    두 수의 곱을 최대공약수로 나눈 몫
    1. 최대공약수 구하기
      • 유클리드 호제법 : a > b라는 가정하에 a에는 b를, b에는 a%b를 대입하여 b가 0일 때의 a가 최대공약수
    a = 18b = 12
    126
    60
    1. 최소공배수 구하기
      • 18*12//6 = 36

3. 코드


초안

a,b,c = map(int, input().split())

def gcd(a,b):
  if a < b: #a가 커야 되므로 swap
    (a,b) = (b,a)
  while b != 0:
    (a,b) = (b, a%b)
  return a

def lcm(a,b):
  return a*b//gcd(a,b)

print(lcm(a,lcm(b,c)))

최종

from math import gcd

a,b,c = map(int, input().split())

def lcm(a,b):
  return a*b//gcd(a,b)

print(lcm(a,lcm(b,c)))

출처 : https://github.com/Gitgorithm/wogus0333_Github/blob/main/CodeUp_100/CodeUp_92.py

4. 개선 사항


math 라이브러리 내에서 최대공약수를 구하는 gcd 함수를 import 하여 사용했다.

profile
성장형 프로그래머

0개의 댓글