[Algorithm] μ΅λ곡μ½μμ μ΅μ곡배μ (μ ν΄λ¦¬λ νΈμ λ²)
π₯ λ¬Έμ
λ μλ₯Ό μ
λ ₯λ°μ λ μμ μ΅λ곡μ½μμ μ΅μ곡배μλ₯Ό λ°ννλ ν¨μ, solutionμ μμ±ν΄ 보μΈμ.
λ°°μ΄μ 맨 μμ μ΅λ곡μ½μ, κ·Έλ€μ μ΅μ곡배μλ₯Ό λ£μ΄ λ°ννλ©΄ λ©λλ€.
μλ₯Ό λ€μ΄ λ μ 3, 12μ μ΅λ곡μ½μλ 3, μ΅μ곡배μλ 12μ΄λ―λ‘ solution(3, 12)λ [3, 12]λ₯Ό λ°νν΄μΌ ν©λλ€.
π€ νμ΄ λ°©λ²
μ ν΄λ¦¬λ νΈμ λ²μΌλ‘ μ΅λ곡μ½μ ꡬνκΈ°
μ ν΄λ¦¬λ νΈμ λ²μ 2κ°μ μμ°μμ μ΅λ곡μ½μλ₯Ό ꡬνλ μκ³ λ¦¬μ¦μ΄λ€.
2κ°μ μμ°μ n, mμ λν΄μ nλ₯Ό mλ‘ λλ λλ¨Έμ§λ₯Ό rμ΄λΌ νλ©΄, nκ³Ό mμ μ΅λ곡μ½μλ mκ³Ό rμ μ΅λ곡μ½μμ κ°λ€.
μ΄λ₯Ό μ΄μ©νμ¬ mμ rλ‘ λλ λλ¨Έμ§ r'λ₯Ό ꡬνκ³ , λ€μ rμ r'λ‘ λλ λλ¨Έμ§λ₯Ό ꡬνλ κ³Όμ μ λ°λ³΅νμ¬ λλ¨Έμ§κ° 0μ΄ λμμ λ λλλ μκ° nκ³Ό mμ μ΅λ곡μ½μμ΄λ€.
- 1071κ³Ό 1029μ μ΅λ곡μ½μλ₯Ό ꡬνλ©΄,
- 1071 % 1029 = 42
- 1029 % 42 = 21
- 42 % 21 = 0
λ°λΌμ, μ΅λ곡μ½μλ 21
- 78696κ³Ό 19332μ μ΅λ곡μ½μλ₯Ό ꡬνλ©΄,
- 78696 % 19332 = 1368
- 19332 % 1368 = 180
- 1368 % 180 = 72
- 180 % 72 = 36
- 72 % 36 = 0
λ°λΌμ, μ΅λ곡μ½μλ 36
μ΅μ곡배μ ꡬνκΈ°
nκ³Ό mμ μ΅μ곡배μλ nκ³Ό mμ κ³±ν μλ₯Ό μ΅λ곡μ½μλ‘ λλλ©΄ ꡬν μ μλ€.
μμΌλ‘ νννλ©΄ μ΅μ곡배μ = n * m / μ΅λ곡μ½μ
μ΄λ€.
π©π»π» Swift Code
func solution(_ n:Int, _ m:Int) -> [Int] {
var gcd = 0
var lcm = 0
var num1 = max(n, m)
var num2 = min(n, m)
var r = num1 % num2
while num1 % num2 != 0 {
r = num1 % num2
num1 = num2
num2 = r
}
gcd = num2
lcm = n * m / gcd
return [gcd, lcm]
}
μ½λ©ν μ€νΈ μ°μ΅ - μ΅λ곡μ½μμ μ΅μ곡배μ
λ μλ₯Ό μ λ ₯λ°μ λ μμ μ΅λ곡μ½μμ μ΅μ곡배μλ₯Ό λ°ννλ ν¨μ, solutionμ μμ±ν΄ 보μΈμ. λ°°μ΄μ 맨 μμ μ΅λ곡μ½μ, κ·Έλ€μ μ΅μ곡배μλ₯Ό λ£μ΄ λ°ννλ©΄ λ©λλ€. μλ₯Ό λ€μ΄ λ μ 3, 12μ
programmers.co.kr