728x90
반응형
https://www.acmicpc.net/problem/2609
Python) 백준 2609번 - 최대공약수와 최소공배수 문제 풀이
오늘은 백준 2609번 문제인 최대공약수와 최소공배수를 Python으로 풀어보겠습니다. 이 문제는 두 개의 자연수가 주어졌을 때, 최대공약수(GCD)와 최소공배수(LCM)를 구하는 문제입니다.
문제 설명
주어진 두 자연수의 최대공약수와 최소공배수를 출력하는 프로그램을 작성하세요.
입력
- 첫 번째 줄에 두 개의 자연수가 주어집니다. (1 ≤ 두 수 ≤ 10,000)
출력
- 첫째 줄에 주어진 두 수의 최대공약수(GCD)를 출력하고,
- 둘째 줄에 최소공배수(LCM)를 출력합니다.
문제 해결 과정
최대공약수(GCD)와 최소공배수(LCM)는 수학에서 자주 사용되는 개념입니다. 이번 문제에서는 Python을 활용해 두 수의 최대공약수와 최소공배수를 구하는 방법을 정리합니다.
🔍 핵심 개념
- 최대공약수(GCD): 두 수의 공통된 약수 중 가장 큰 값입니다.
- 최소공배수(LCM): 두 수의 공통된 배수 중 가장 작은 값으로, 두 수의 곱을 최대공약수로 나눈 값과 동일합니다.
💡 풀이 전략
- 최대공약수(GCD)를 구하는 방법 중 하나로는 유클리드 호제법이 있습니다. 이는 반복적인 나눗셈을 통해 쉽게 구할 수 있습니다.
- 최소공배수(LCM)는 두 수의 곱을 최대공약수(GCD)로 나눈 값으로 구할 수 있습니다.
🔨 코드 구현
# 최대공약수를 구하는 함수 (유클리드 호제법 사용)
def GCD(a, b):
while b: # b가 0이 될 때까지 반복
a, b = b, a % b
return a # 최대공약수 반환
# 최소공배수를 구하는 함수
def LCM(a, b):
return (a * b) // GCD(a, b) # 두 수의 곱을 최대공약수로 나눠 최소공배수 계산
# 입력받은 두 수를 리스트로 변환
numbers = list(map(int, input().split())) # 두 정수를 입력받아 리스트로 저장
# 최대공약수 계산
gcd = GCD(numbers[0], numbers[1])
print(gcd) # 최대공약수 출력
# 최소공배수 계산
lcm = LCM(numbers[0], numbers[1])
print(lcm) # 최소공배수 출력
🚀 코드 설명
- GCD 함수는 유클리드 호제법을 사용하여 두 수의 최대공약수를 계산합니다. 두 수를 계속 나머지 연산을 통해 나누어 나가며, 나누어떨어질 때까지 반복합니다.
- LCM 함수는 두 수의 곱을 최대공약수로 나누어 최소공배수를 구합니다. 최소공배수는 두 수의 곱을 최대공약수로 나눈 값과 같기 때문에 효율적으로 계산할 수 있습니다.
- 입력받은 두 자연수를 list(map(int, input().split()))을 통해 리스트로 변환하여 각각의 값을 저장합니다.
- 최대공약수와 최소공배수를 계산하여 각각 출력합니다.
🧐 배운 점
이번 문제를 통해 유클리드 호제법을 이용한 최대공약수(GCD) 구하는 방법과, 이를 바탕으로 최소공배수(LCM)를 구하는 방법을 복습할 수 있었습니다. 특히, 유클리드 호제법은 매우 빠르고 효율적으로 최대공약수를 구할 수 있는 방법이기 때문에, 많은 문제에서 유용하게 사용할 수 있습니다.
🔚 마무리
최대공약수와 최소공배수를 구하는 문제는 수학적인 기초 개념이 잘 정리되어 있어야 쉽게 풀 수 있습니다. 이번 풀이에서는 기본적인 수학 개념을 Python 코드로 구현해 보았으며, 유클리드 호제법을 활용해 효율적으로 문제를 해결할 수 있었습니다. 앞으로 더 복잡한 문제에서도 이 개념을 확장하여 적용할 수 있기를 기대합니다.
728x90
반응형
'프로그래밍_백준 > Python' 카테고리의 다른 글
Python) 10989 수 정렬하기 Counting Sort (계수 정렬) (0) | 2023.08.08 |
---|---|
Python) 1181번 단어 정렬 (sort함수) (0) | 2023.08.07 |
Python) 9012번 괄호 문제 (stack) (0) | 2023.08.07 |
Python) 2839번 설탕 배달 문제 (0) | 2023.08.07 |
Python) 백준 1978번 소수 찾기 (0) | 2023.08.02 |