[Algorithm/Swift] νλ‘κ·Έλλ¨Έμ€(Lv.1) - μ΅λ곡μ½μμ μ΅μ곡배μ
μλ νμΈμ μ μΈμ λλ€!!
μ€λμ νλ‘κ·Έλλ¨Έμ€ λ¬Έμ λ₯Ό νλ€κ° μκ²λ μ΅λ곡μ½μ, μ΅μ곡배μ ꡬνλ λ°©λ²μ λν΄ κΈ°λ‘ν΄λ³΄λ €κ³ ν©λλ€!
νλ‘κ·Έλλ¨Έμ€μ μ΅λ곡μ½μμ μ΅μ곡배μ λ¬Έμ λ λ 벨1μ κ°λ¨ν λ¬Έμ μ΄μ§λ§
μ΅λ곡μ½μ, μ΅μ곡배μλ₯Ό ꡬνλ 곡μ(?)κ³Ό κ°μ κ°λ μ μκ³ μμ§ μλ€λ©΄ μ½κ² ν μ μλ λ¬Έμ μ΄κΈ° λλ¬Έμ λ€λ₯Έ λ¬Έμ λ€μμμ μμ©μ λλΉν΄ μ 리νκ³ λμ΄κ°λ €κ³ ν©λλ€!!
λ¬Έμ λ§ν¬
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ 맀μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
λ¬Έμ μ€λͺ
λ μλ₯Ό μ λ ₯λ°μ λ μμ μ΅λ곡μ½μμ μ΅μ곡배μλ₯Ό λ°ννλ ν¨μ, solutionμ μμ±ν΄ 보μΈμ. λ°°μ΄μ 맨 μμ μ΅λ곡μ½μ, κ·Έλ€μ μ΅μ곡배μλ₯Ό λ£μ΄ λ°ννλ©΄ λ©λλ€. μλ₯Ό λ€μ΄ λ μ 3, 12μ μ΅λ곡μ½μλ 3, μ΅μ곡배μλ 12μ΄λ―λ‘ solution(3, 12)λ [3, 12]λ₯Ό λ°νν΄μΌ ν©λλ€.
μ ν μ¬ν
- λ μλ 1μ΄μ 1000000μ΄νμ μμ°μμ λλ€.
μ μΆλ ₯ μ
n | m | return |
3 | 12 | [3, 12] |
2 | 5 | [1, 10] |
μ μΆλ ₯ μ μ€λͺ
μ
μΆλ ₯ μ #1
μμ μ€λͺ
κ³Ό κ°μ΅λλ€.
μ
μΆλ ₯ μ #2
μμ°μ 2μ 5μ μ΅λ곡μ½μλ 1, μ΅μ곡배μλ 10μ΄λ―λ‘ [1, 10]μ 리ν΄ν΄μΌ ν©λλ€.
λ¬Έμ νμ΄
μ½μ, λ°°μ ꡬνκΈ°λ λ°λ³΅λ¬Έμ μ¬μ©νλ©΄ μ½λλ‘λ κ°λ¨νκ² κ΅¬νμ΄ λκΈ° λλ¬Έμ μ΄ λ¬Έμ λ μ½κ² ν μ μμ κ²μ΄λΌκ³ μκ°νλλ°,
λ§μ λ μμ μ΅λ곡μ½μμ μ΅μ곡배μλ₯Ό ꡬνλ μ½λλ₯Ό μμ±νλ €κ³ νλ μ΄λΌλΌ.. μ½λκ° μμ² λ³΅μ‘ν΄μ§κ³ ..
λκ° λ¬Έμ μ μλλ μ΄κ² μλ κ² κ°κ³ ..ν΄μ νμ΄λ₯Ό μ°Ύμλ³΄κ² λμλ€.
λ¨Όμ , μ΅λ곡μ½μλ μ ν΄λ¦¬λ νΈμ λ²μ μ΄μ©ν΄ ꡬν μ μμ΅λλ€.
μ ν΄λ¦¬λ νΈμ λ²μ κ°λ¨ν μ 리ν΄λ³΄μλ©΄, λ€μκ³Ό κ°μ΅λλ€.
2κ°μ μμ°μ(λλ μ μ) a, bμ λν΄μ aλ₯Ό bλ‘ λλ λλ¨Έμ§λ₯Ό rμ΄λΌ νλ©΄ (λ¨, a>b),
aμ bμ μ΅λ곡μ½μλ bμ rμ μ΅λ곡μ½μμ κ°λ€.
μ΄ μ±μ§μ λ°λΌ, bλ₯Ό rλ‘ λλ λλ¨Έμ§ r'μ ꡬνκ³ , λ€μ rμ r'λ‘ λλ λλ¨Έμ§λ₯Ό ꡬνλ κ³Όμ μ λ°λ³΅νμ¬
λλ¨Έμ§κ° 0μ΄ λμμ λ λλλ μκ° aμ bμ μ΅λ곡μ½μμ λλ€!
μ΄λ₯Ό μ½λλ‘ κ΅¬ννλ©΄, aλ₯Ό bλ‘ λλ λλ¨Έμ§ κ°μ΄ 0μΌ λκΉμ§ λ°λ³΅λλ μ¬κ·ν¨μ ννλ‘ κ΅¬νν μ μμ΅λλ€.
/// μ΅λ곡μ½μ
func gcd(_ a: Int, _ b: Int) -> Int {
if b == 0 {
return a
} else {
return gcd(b, a % b)
}
}
μ΅μ곡배μλ μ΅λ곡μ½μλ₯Ό ꡬνλ€λ©΄ μ΅λ곡μ½μμ μ΅μ곡배μμ κ΄κ³λ₯Ό μ΄μ©ν΄ μ½κ² ꡬν μ μμ΅λλ€!
μ΅λ곡μ½μμ μ΅μ곡배μμ κ΄κ³λ λ€μκ³Ό κ°μ΅λλ€.
λ μμ°μ A, Bμ μ΅λ곡μ½μκ° Gμ΄κ³ , μ΅μ곡배μκ° LμΌ λ,
A = a x G, B = b x G (a, bλ μλ‘μ) λΌ νλ©΄ λ€μμ΄ μ±λ¦½νλ€.
1) L = a x b x G
2) A x B = L x G
μ¦, λ μλ₯Ό κ³±ν κ°μ λ μμ μ΅λ곡μ½μ x μ΅μ곡배μ μ κ°μ΅λλ€!
a*b = μ΅λ곡μ½μ * μ΅μ곡배μλ₯Ό νμ©ν΄ μ½λλ‘ κ΅¬νν΄λ³΄λ©΄ μλμ κ°μ΄ ꡬνν μ μμ΅λλ€.
/// μ΅μ곡배μ
func lcm(_ a: Int, _ b: Int) -> Int {
return a * b / gcd(a, b)
}
μ 체 μ½λ
/// μ΅λ곡μ½μ
func gcd(_ a: Int, _ b: Int) -> Int {
if b == 0 {
return a
} else {
return gcd(b, a % b)
}
}
/// μ΅μ곡배μ
func lcm(_ a: Int, _ b: Int) -> Int {
return a * b / gcd(a, b)
}
func solution(_ n:Int, _ m:Int) -> [Int] {
return [gcd(n, m), lcm(n, m)]
}
[μ°Έκ³ μλ£]
https://ko.wikipedia.org/wiki/μ ν΄λ¦¬λ_νΈμ λ²
https://hongjeongseob82.medium.com/ios-swift-gcd-lgm-μ΅λ곡μ½μ-μ΅μ곡배μ-49d57a36fda3
https://velog.io/@2dubu/Swift-μκ³ λ¦¬μ¦-μ΅λ곡μ½μμ-μ΅μ곡배μ