300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DFS
- 그래프
- nlp
- OS
- 순열
- 킥스타트
- 운영체제
- 알고리즘
- 네트워크
- kick start
- google coding competition
- 프로그래머스
- 코딩
- dp
- 동적프로그래밍
- 리눅스
- PYTHON
- BFS
- 코딩 테스트
- AI
- CSS
- linux
- 브루트포스
- 프로그래밍
- 코딩테스트
- 백준
- 딥러닝
- 동적 프로그래밍
- 파이썬
- 구글 킥스타트
Archives
- Today
- Total
오뚝이개발자
[백준2609] 최대공약수와 최소공배수 본문
728x90
300x250
문제
https://www.acmicpc.net/problem/2609
풀이
방법 1)
div가 2부터 시작해서 num1과 num2를 모두 나누어 떨어지게 하는 수를 반복적으로 찾아 gcd를 구한다. lcm은 gcd를 이용해 구한다.
방법 2)
유클리드 호제법 이용 -> gcd(a,b)=gcd(b,a%b)를 반복적으로 시행해서 a%b가 0이 되는 순간 b가 gcd임을 이용
방법 3)
import math를 하여 math.gcd(a,b)를 이용하는 아주 편리한 방법도 있다.
코드
num1, num2 = input().split()
num1 = int(num1)
num2 = int(num2)
gcd = 1
lcm = 1
div = 2
while True:
smaller = min(num1, num2)
if div > smaller:
break
if num1 % div == 0 and num2 % div == 0:
num1 = num1//div
num2 = num2//div
gcd *= div
div = 1
div += 1
lcm = gcd * num1 * num2
print(gcd)
print(lcm)
728x90
300x250
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준1476] 날짜 계산 (0) | 2020.03.05 |
---|---|
[백준2309] 일곱 난쟁이 (0) | 2020.03.05 |
[백준6588] 골드바흐의 추측 (0) | 2020.03.04 |
[백준9613] GCD 합 (0) | 2020.03.04 |
[백준1934] 최소공배수 (0) | 2020.03.03 |
Comments