λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» DEV/γ„΄ problems

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] N개의 μ΅œμ†Œκ³΅λ°°μˆ˜

by vodkassi 2021. 7. 13.
728x90

문제 μ„€λͺ…

 

두 수의 μ΅œμ†Œκ³΅λ°°μˆ˜(Least Common Multiple)λž€ μž…λ ₯된 두 수의 배수 쀑 곡톡이 λ˜λŠ” κ°€μž₯ μž‘μ€ 숫자λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 2와 7의 μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 14κ°€ λ©λ‹ˆλ‹€. μ •μ˜λ₯Ό ν™•μž₯ν•΄μ„œ, n개의 수의 μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” n 개의 μˆ˜λ“€μ˜ 배수 쀑 곡톡이 λ˜λŠ” κ°€μž₯ μž‘μ€ μˆ«μžκ°€ λ©λ‹ˆλ‹€. n개의 숫자λ₯Ό 담은 λ°°μ—΄ arr이 μž…λ ₯λ˜μ—ˆμ„ λ•Œ 이 μˆ˜λ“€μ˜ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄ μ£Όμ„Έμš”.

 


μ œν•œ 사항

  • arr은 길이 1이상, 15μ΄ν•˜μΈ λ°°μ—΄μž…λ‹ˆλ‹€.
  • arr의 μ›μ†ŒλŠ” 100 μ΄ν•˜μΈ μžμ—°μˆ˜μž…λ‹ˆλ‹€.


μž…μΆœλ ₯ 예

 

arr result
[2,6,8,14] 168
[1,2,3] 6

 

 

λ‚˜μ˜ μ†”λ£¨μ…˜

 

두 수의 μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό κ΅¬ν•˜λŠ” 방법은 두 수λ₯Ό κ³±ν•œ 값에 두 수의 μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό λ‚˜λˆ„λŠ” 것이닀. 이λ₯Ό 배열에 순차적으둜 μ μš©ν•˜μ—¬ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€. 

import math
            
def solution(arr):
    cur = 1
    for x in arr:
        gcd = math.gcd(cur, x)
        cur = int((cur * x) / gcd)
    return cur

 

배운 점

python 의 gcd λͺ¨λ“ˆμ€ 정말 κ°„μ†Œν™”μ˜ λŒ€ν‘œ 격이닀. 심지어 3.9 μ΄μƒλΆ€ν„°λŠ” μ—¬λŸ¬ 개의 μ΅œμ†Œκ³΅μ•½μˆ˜λ§ˆμ € ꡬ해쀀닀고 ν•˜λ‹ˆ, 점점 인간이 ν•  μ—°μ‚°μ˜ μ˜μ—­μ΄ μ€„μ–΄λ‚˜κ°€λŠ” λŠλ‚Œμ΄λ‹€. 

λŒ“κΈ€