Coding/Code in the Morning

211224_Code in the morning

κΉ€μœ λ‹ˆμ½˜ 2021. 12. 24. 16:32

Code in the morning, 맀일 μ•„μΉ¨ μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’‰λ‹ˆλ‹€. 

πŸ’¬ 문제 μ„€λͺ… : μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜

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

 

 

πŸ“ μ œν•œ 사항

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

 

 

πŸ’‘ λ‚˜μ˜ 풀이 

def solution(n, m):
    answer = []
    
    for i in range (min(n,m), 0, -1):
        if (n % i == 0) and (m % i == 0):
            answer.append(i)
            break
                        
    for j in range ( max(n,m), m*n+1 ):
        if (j % n ==0) and ( j%m ==0):
            answer.append(j)
            break
        
    return answer

 

πŸ’‘ λ‹€λ₯Έ ν•΄μ„€

* 파이썬 μ΅œμ†Œκ³΅λ°°μˆ˜, μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” λ‚΄μž₯ν•¨μˆ˜λ‘œ μ‰½κ²Œ ꡬ할 수 있음

gcd(greatest common divisor) 

lcm(least common multiple) 

from math import gcd
def solution(n, m):
    gcd_num = gcd(n, m)
    lcm_num = n*m // gcd(n,m)
    answer = [gcd_num, lcm_num]
    return answer

 

 

 

μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•

μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό 찾을 λ•Œ, μž‘μ€ 수의 κ²½μš°μ—λŠ” μ‚¬λžŒμ΄ 직접 κ³„μ‚°ν•΄μ„œ 찾을 수 μžˆμ§€λ§Œ, μˆ˜κ°€ 무진μž₯ 컀진닀면 컴퓨터λ₯Ό 써야 ν•©λ‹ˆλ‹€. 그런데 컴퓨터λ₯Ό μ΄μš©ν•΄ μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό 찾을 λ•ŒλŠ”, μœ„μ™€ 같이 μ†ŒμΈμˆ˜λΆ„ν•΄λ₯Ό ν•˜κΈ° λ³΄λ‹€λŠ” μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ΄λΌλŠ” μ•Œκ³ λ¦¬μ¦˜(문제λ₯Ό ν’€κΈ° μœ„ν•΄ 정해진 절차)λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 λΉ λ¦…λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ€ λ‹€μŒ μ •λ¦¬λ‘œλΆ€ν„° κΈ°μΈν•©λ‹ˆλ‹€.

 

Aλ₯Ό B둜 λ‚˜λˆˆ λͺ«μ„ Q라 ν•˜κ³ , λ‚˜λ¨Έμ§€λ₯Ό R이라 ν•˜μž. 이 λ•Œ, gcd(A,B)=gcd(B,R)이닀.

 

μ˜ˆμ‹œλ₯Ό λ³΄κ² μŠ΅λ‹ˆλ‹€. 60λ₯Ό 24둜 λ‚˜λˆˆ λͺ«μ€ 2이고 λ‚˜λ¨Έμ§€λŠ” 12μž…λ‹ˆλ‹€. 즉, 60=24×2+12μž…λ‹ˆλ‹€. κ³Όμ—° gcd(60,24)=gcd(24,12)=12μž„μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 이 정리λ₯Ό μ΄μš©ν•œ μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²• μ•Œκ³ λ¦¬μ¦˜μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 

  1. A와 B의 μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•΄μ„œ Aλ₯Ό B둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€ R1을 κ΅¬ν•©λ‹ˆλ‹€.
  2. Bλ₯Ό R1으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€ R2λ₯Ό κ΅¬ν•©λ‹ˆλ‹€.
  3. R1을 R2둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€ R3λ₯Ό κ΅¬ν•©λ‹ˆλ‹€.
  4. 이 과정을 계속 λ°˜λ³΅ν•˜μ—¬, μ–΄λŠ ν•œ μͺ½μ΄ λ‚˜λˆ„μ–΄λ–¨μ–΄μ§ˆ λ•ŒκΉŒμ§€ λ°˜λ³΅ν•©λ‹ˆλ‹€. 이 직전 얻은 λ‚˜λ¨Έμ§€κ°€ μ΅œλŒ€κ³΅μ•½μˆ˜μž…λ‹ˆλ‹€.

 

πŸ‘‰πŸ» 문제 λ°”λ‘œκ°€κΈ° 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜

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

programmers.co.kr

 

 

 

https://dimenchoi.tistory.com/46

'Coding > Code in the Morning' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

211228_Code in the morning  (0) 2021.12.28
211227_Code in the morning  (0) 2021.12.27
211222_Code in the morning  (0) 2021.12.23
211206_Code in the morning  (0) 2021.12.07
211206_Code at Night ⭐️  (0) 2021.12.06