[백준] 2609번 : 최대공약수와 최대공배수

letsbebrave·2022년 2월 26일
0

codingtest

목록 보기
32/146

문제

개념

  1. 최대공약수, 최소공배수
    최대공약수는 두 숫자의 공통된 부분을 곱해주면 된다.
    최소공배수는 따로 구하지 않았고, 아래 수식을 고안해서 풀어주었다.

    최소공배수 = a * b // 최대공약수

  2. 리스트가 비어있는지 확인하는 법

len(list1)

list1 = []
list2 = [1, 2, 3]

if len(list1) == 0: # len(list1) == 0이면 True인 것!
    print("list1 is empty")
if len(list2) != 0:  # len(list2) != 0이면 True인 것!
    print("list2 is not empty")

if not list1 :

list1 = []
list2 = [1, 2, 3]

if not list1: # 리스트가 비어있음 True
    print("list1 is empty")

if list2: # 리스트가 비어있지 않음 True
    print("list2 is not empty")

풀이

x, y = map(int, input().split())
a, b = x, y
small = 0

if x <= y:
    small = x
else:
    small = y
arr = []
n = 2
while n <= small:
    if x % n == 0 and y % n == 0:
        x = x // n
        y = y // n
        arr.append(n)
        n = 2
    else:
        n += 1

if not arr == 0 :
    arr.append(1)
    
answer1 = 1
for i in arr:
    answer1 = answer1 * i

print(answer1)
print(a*b//answer1)

다른사람 풀이

유클리드 호제법을 이용한 풀이
https://velog.io/@junyp1/백준-2609-Python-최대공약수와-최소공배수

파이썬 math 모듈을 이용한 풀이
lcm()함수는 파이썬 3.9버전 이상부터 사용 가능함

import math

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

print(math.gcd(a, b))
print(math.lcm(a, b))
profile
그게, 할 수 있다고 믿어야 해

0개의 댓글