카테고리 없음

[Python] 백준 1934 최소공배수

도아죻아 2022. 11. 13. 17:05
반응형

코드 작성1

n = int(input())
for _ in range(n):
    k =[]
    a,b = map(int, input().split())
    for i in range(1,min(a,b)+1):
        if a%i == 0 and b%i == 0:
            k.append(i)
    print(a*b//max(k))  #a*b/max(k)로 연산할 경우 소수점 1자리가 붙는다

 

코드 작성2

import math
n = int(input())
for _ in range(n):
    a,b = map(int, input().split())
    print(math.lcm(a,b)) #lcm : least common multiple(최소공배수)

 

코드  풀이1

#1

a와 b의 수 중 작은 수로 for문을 1부터 a,b중 작은 수까지 돌리고, 나누어 떨어지는 수(n%i)를 k의 리스트에 넣는다(append). 그 약수 중 가장 큰 수가 최대공약수이다.

 

#2

a*b/최대공약수를 계산하면 최소공배수가 된다.

 

#3

파이썬에서는 20/4는 5.0이다. 따라서 print(int(20/4) 또는 print(20//4)로 입력해야 한다.

 

코드  풀이2

#1 

math 모듈을 import 함으로써 파이썬에 내장되어 있는 최대공약수와 최소공배수의 함수를 사용할 수 있다.

최대공약수 : gcd - Greatest Common Devisor(가장 큰 공통의 나눈 수)

최소공배수 : lcm - Least Common Multiple(가장 작은 공통의 배수)

영어로만 기억하려면 헷갈리기 때문에 풀어서 이해하려고 해야한다.

반응형