2019๋ 1์ 30์ผ
์ถ์ฒ: https://programmers.co.kr/learn/courses/30/lessons/12940
๋ ์๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ ์์ ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด ๋ณด์ธ์. ๋ฐฐ์ด์ ๋งจ ์์ ์ต๋๊ณต์ฝ์, ๊ทธ๋ค์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฃ์ด ๋ฐํํ๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ ์ 3, 12์ ์ต๋๊ณต์ฝ์๋ 3, ์ต์๊ณต๋ฐฐ์๋ 12์ด๋ฏ๋ก solution(3, 12)๋ [3, 12]๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.
- ๋ ์๋ 1์ด์ 1000000์ดํ์ ์์ฐ์์ ๋๋ค.
# ๋ฐฉ๋ฒ1
def gcdlcm(a, b):
G = 1
range_num = min(a,b) # ๋ ์ค ์์ ์ ๊น์ง์ ๋ฒ์๋ง ๊ตฌํ๋ฉด ๋๋ค.
for i in range(range_num, 1, -1):
if(a%i ==0 and b%i ==0 ):
G = i
break
L = int(a*b/G)
return [G, L] # [G, L], ์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์
# ๋ฐฉ๋ฒ2 (์ ํด๋ฆฌ๋ ํธ์ ๋ฒ)
'''
a๋ฅผ b๋ก ๋๋ ๋๋จธ์ง๊ฐ r์ด๋ผ๊ณ ํ์(a>=b, 0<=r<b)
a์b์ ์ต๋๊ณต์ฝ๋ฅผ (a,b)๋ผ๊ณ ํ๋ฉด ๋ค์์ด ์ฑ๋ฆฝํ๋ค.
(a,b) = (b,r)
ex) (1071,1029) = (1029,42) = (42,21) = (21,0) = 21
'''
def gcdlcm(n,m):
a = max(n,m)
b = min(n,m)
remainder = a%b
while(remainder>0):
a = b
b = remainder
remainder = a%b
G = b
L = int(n*m/G)
return [G,L]
- a,b์ ์ต์๊ณต๋ฐฐ์ = a*b/G (G = a,b์ ์ต๋๊ณต์ฝ์)
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ผ๋ก ์ต๋๊ณต์ฝ์๋ฅผ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๊ตฌํ๋ ๋ฒ์ ์๊ฒ๋์๋ค.
- ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๋ฉฐ ์ข ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์์๊ฐ๋ ์ฌ๋ฏธ๊ฐ ์๋ค.