Python

[코드업-기초-종합] 최소공배수 구하기(+최대공약수 구하기)(F)

고고잉93 2023. 11. 4. 15:21
728x90

https://www.codeup.kr/problem.php?id=6091

 

[기초-종합] 함께 문제 푸는 날(설명)(py)

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

www.codeup.kr

입력

같은 날 동시에 가입한 인원 3명이 규칙적으로 방문하는,
방문 주기가 공백을 두고 입력된다. (단, 입력값은 100이하의 자연수이다.)

 

출력

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

 

입력 예시

3 7 9

 

출력 예시

63


F


a,b,c=map(int,input().split())
d = 1
while d%a!=0 or d%b!=0 or d%c!=0 :
  d += 1
print(d)

 

최소 공배수 + 최대공약수 문제는 1,2번 풀어봤지만 기억이 나질 않았다...

 

+) 

def solution(n, m):
    gcd = lambda a,b : b if not a%b else gcd(b, a%b)
    lcm = lambda a,b : a*b//gcd(a,b)
    return [gcd(n, m), lcm(n, m)]

이건 프로그래머스에서 다른사람이 작성한 풀이인데

b if not a% a%b의 값이 0이 되면(True) 최대공약수가 b가 되며, else gcd(b, a%b 나머지가 0이 아닐시 ...인데

 

유클리드 호재법을 이용하여 최대공약수를 구한것이다.

- 2개의 자연수(a,b)가 존재할때 a/b 의 나머지(a%b)를 r이라고 한다면 최대공약수는 b와 r의 최대공약수와 같다.

이것을 반복하여 r=0이 될때 b값이 최대공약수가 됨.

 

lcm(최소공배수)는 최대공약수를 이용하여 해결..

++) lcm함수는 파이썬 3.9부터 적용

 

728x90