728x90
문제 링크: https://www.acmicpc.net/problem/2609
2609번: 최대공약수와 최소공배수
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
www.acmicpc.net
최대공약수 ㅋㅋㅋ 배웠던 거가 나왔다. 유클리드 호제법을 이용하기!
샛길공부로 따로 자세하게 써놓은 글은 여기로 아래로👇👇👇👇
2021.11.22 - [코딩공부/파이썬 공부] - [샛길공부] 파이썬 최대공약수와 최대공배수 구하는 여러가지 방법
다... 그래서 틀린걸까
❌ 1차시도 실패
최소공배수에서 return을 할 때, a,b가 재귀함수 돌면서 바뀔거라는 걸 생각안함...
그래서 실패.. !! 그래서 방법은! 아래에 나와있다!
❓ 정답은 ??
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
a,b = map(int,input().split())
#최대공약수(유클리드호제법)
def result_1(a,b):
if a%b==0:
return b
else:
return result_1(b, a%b)
c,d=a,b
#최대공배수(최대공약수로 나눈 몫들과 최대공약수를 곱한 값)
def result_2(a,b):
if a%b==0:
return int(b*(c/b)*(d/b))
else:
return result_2(b, a%b)
print(result_1(a,b))
print(result_2(a,b))
|
cs |
✨다른 분들의 최대공배수 풀이를 보니!
그냥 주어지는 두 값을 곱하고 최대공약수를 나누는 방법을 쓰고 있었다!
역시 다른 분들의 방법을 보는 것 또한 배움을 키우는 것!
💯 풀이 과정
1)최대공약수는 유클리드호제법으로 쉽게 도출!
# 유클리드 호제법 : 두 자연수 A,B(A>B)에서 A%B==R이면,
# A와B의 최대공약수는 B와R의 최대공약수와 동일
2)최대공배수는
2-1) 일단 보니까 주어진 각 값을 최대공약수로 나눈 다음
2-2) 나온 각 몫들의 곱과 최대공약수들의 곱으로 답 도출!
(주의할 점! 재귀 함수를 돌면서 처음 a,b값이 바뀌어버릴 수 있으니 미리 c,d로 복제해놓고 답 도출 시 사용하기!)
🎀가장 쉬운 방법은! 파이썬 내장함수 이용하기!
import sys
math.gcd(a,b) #최대공약수
math.lcm(a,b) #최소공배수
😎오늘의 한줄평: 배운거 써먹기!
728x90
'😁 빅데이터 문제 풀기 & Study > - BAEKJOON 문제' 카테고리의 다른 글
[4948] 베르트랑 공준 / 파이썬 (다시풀어보기) (0) | 2021.11.24 |
---|---|
[4948] 베르트랑 공준 / 파이썬 (에라토스테네스의 체,리스트컴프리핸션) (0) | 2021.11.23 |
[1085] 직사각형에서 탈출 / 파이썬 (어렵게 생각하지 말자) (0) | 2021.11.21 |
[2805] 나무자르기 / 파이썬 (오랜만에 이진탐색) (0) | 2021.11.19 |
[10989] 직각삼각형 / 파이썬 (피타고라스 정리 사용) (0) | 2021.11.19 |