λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm/Programmers

[Programmers] μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜

 

문제 

 

두 수λ₯Ό μž…λ ₯λ°›μ•„ 두 수의 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄ λ³΄μ„Έμš”. λ°°μ—΄μ˜ 맨 μ•žμ— μ΅œλŒ€κ³΅μ•½μˆ˜, κ·Έλ‹€μŒ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό λ„£μ–΄ λ°˜ν™˜ν•˜λ©΄ λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 두 수 3, 12의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” 3, μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 12μ΄λ―€λ‘œ solution(3, 12)λŠ” [3, 12]λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

 

μ œν•œ 사항 
  • 두 μˆ˜λŠ” 1이상 1000000μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

 

ν•΄μ„€ μ½”λ“œ 
def solution(n, m):
    # a 와 b에 μž…λ ₯된 nκ³Ό m 값을 μ €μž₯ν•œλ‹€. 
    a = n
    b = m
    # λ§Œμ•½ n이 m보닀 더 크닀면, nκ³Ό m의 μœ„μΉ˜λ₯Ό λ°”κΎΌλ‹€. 
    if n>m:
        n, m = m, n
    # m%n이 0이 될 λ•ŒκΉŒμ§€ m%n을 λ°˜λ³΅ν•˜κ³  λ‚˜λ¨Έμ§€κ°€ 0이 될 λ•Œμ˜ n값을 κ΅¬ν•œλ‹€. 
    while m%n:
        r = m%n
        m = n
        n = r
    return [n, a*b/n]
뢄석 > μœ„μ™€ 같이 μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²• 이라고 ν•œλ‹€. μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ€ a와 b에 λŒ€ν•΄μ„œ (a>b) r = a % b 라고 ν•˜λ©΄ r == 0 이 될 λ•ŒκΉŒμ§€ λ‚˜λˆ„κΈ°λ₯Ό λ°˜λ³΅ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. 예λ₯Ό λ“€μ–΄, 100κ³Ό 120의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” 120 % 100 = 20 -> 100 % 20 = 0 이 되면 반볡문이 λ©ˆμΆ”κ³  λ§ˆμ§€λ§‰ n값이 μ΅œλŒ€κ³΅μ•½μˆ˜κ°€ λœλ‹€. μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 처음 μ €μž₯ν•΄λ‘” a 와 b κ°’μ˜ 곱을 n으둜 λ‚˜λˆˆ κ°’μ΄λ―€λ‘œ λ°”λ‘œ 좜λ ₯ν•  수 μžˆλ‹€.