๊ธฐ์กด GCD๊ตฌํ๋ ๋ฐฉ๋ฒ
for i in range(min(a,b),0,-1):
if a%i==0 and b%i==0:
print(i)
break
a์ b์ค ์์ ์ซ์๋ถํฐ ์์ํด์ 1๊น์ง ๊ฐ์ํ๋ฉด์, ์ ์ผ ์ฒ์ a์ b๋ชจ๋ ๋๋ ๋จ์ดํธ๋ฆฌ๋ ์๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ๋ ๋ฌด์ฐจ๋ณ ๋์
(Brute Force)๋ก O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ (Euclidean Algorithm)
def gcd(a,b): # a>b
if b==0:
return a
c=a%b
return gcd(b,c)
a๋ฅผ b๋ก ๋๋ ๋๋จธ์ง๋ฅผ r์ด๋ผ๊ณ ํ์๋, a์ b์ ์ต๋๊ณต์ฝ์๋ b์ r์ ์ต๋๊ณต์ฝ์์ ๊ฐ๋ค๋ ์ฑ์ง์ ์ด์ฉํ ๊ฒ์ด๋ค.(์ฌ๊ทํจ์ ์ด์ฉ
)
์ด๋ฌํ ์ฑ์ง์ ํ์ฉํ์ฌ b์ r์ ์ต๋๊ณต์ฝ์ r0๋ฅผ ๊ตฌํ๊ณ r์ r0๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ๋๋จธ์ง๊ฐ 0 ์ด ๋์์๋ ๊ทธ ๋ชซ์ด a์ b์ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.
์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ O(logN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค
๊ธฐ์กด์ ๋ฐฉ๋ฒ๋ณด๋ค ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ ํ ์ ์๋ค.
์ต์๊ณต๋ฐฐ์
์ต์๊ณต๋ฐฐ์=๋ ์์ฐ์์ ๊ณฑ / ์ต๋๊ณต์ฝ์ ์ด๋ค.
์ฆ (a*b)//gcd(a,b)
๊ฐ ๋๋ค.
'๐์ฝ๋ฉํ ์คํธ:CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1181๋ฒ-ํ์ด์ฌ]๋จ์ด ์ ๋ ฌ (0) | 2023.06.19 |
---|---|
[๋ฐฑ์ค 11729๋ฒ-ํ์ด์ฌ]ํ๋ ธ์ด ํ ์ด๋ ์์ (0) | 2023.06.19 |
[์๊ณ ๋ฆฌ์ฆ]๋ณํฉ ์ ๋ ฌ(Merge Sort) (0) | 2023.06.19 |
์นด์ดํ ์ ๋ ฌ(Counting Sort)Permalink (0) | 2023.06.19 |
[์๊ณ ๋ฆฌ์ฆ]์๊ฐ๋ณต์ก๋ (0) | 2023.06.19 |