ν°μ€ν 리 λ·°
[μ ν΄λ¦¬λ νΈμ λ²]μ΅λ곡μ½μμ μ΅μ곡배μ
choi95 2021. 9. 3. 11:22λ¬Έμ
λ μλ₯Ό μ λ ₯λ°μ λ μμ μ΅λ곡μ½μμ μ΅μ곡배μλ₯Ό λ°ννλ ν¨μ, solutionμ μμ±ν΄ 보μΈμ. λ°°μ΄μ 맨 μμ μ΅λ곡μ½μ, κ·Έλ€μ μ΅μ곡배μλ₯Ό λ£μ΄ λ°ννλ©΄ λ©λλ€. μλ₯Ό λ€μ΄ λ μ 3, 12μ μ΅λ곡μ½μλ 3, μ΅μ곡배μλ 12μ΄λ―λ‘ solution(3, 12)λ [3, 12]λ₯Ό λ°νν΄μΌ ν©λλ€.μ ν μ¬ν
- λ μλ 1μ΄μ 1000000μ΄νμ μμ°μμ λλ€.
μ μΆλ ₯ μ
nmreturn
3 | 12 | [3, 12] |
2 | 5 | [1, 10] |
μ μΆλ ₯ μ μ€λͺ
μ
μΆλ ₯ μ #1
μμ μ€λͺ
κ³Ό κ°μ΅λλ€.
μ
μΆλ ₯ μ #2
μμ°μ 2μ 5μ μ΅λ곡μ½μλ 1, μ΅μ곡배μλ 10μ΄λ―λ‘ [1, 10]μ 리ν΄ν΄μΌ ν©λλ€.
λ¬Έμ νμ΄
μ ν΄λ¦¬λ νΈμ λ²(Euclidean-Algorithm)
- λ μμ μ΅λ곡μ½μ(GCD)λ₯Ό ꡬνλ μκ³ λ¦¬μ¦
- νΈμ λ²: λ μκ° μλ‘ μλλ°© μλ₯Ό λλμ΄μ κ²°κ΅ μνλ μλ₯Ό μ»λ μκ³ λ¦¬μ¦
MOD μ°μ°
- μ ν΄λ¦¬λ νΈμ λ²μ μ΄ν΄νκΈ° μν΄μ μ μ λλ μ°μ°
- λ κ°μ λλ λλ¨Έμ§λ₯Ό ꡬνλ μ°μ°
0μ΄μμΈ λ κ°μ μ μ μ€ ν° μλ₯Ό μμ μλ‘ λλ λλ¨Έμ§λ₯Ό ꡬνλ€(MOD μ°μ°)
12 mod 5 = 2
μ΄ν, λλ΄λ μμ λλ¨Έμ§λ₯Ό ν΅ν΄ λ€μ mod μ°μ°μ νλ€(κ³Όμ λ°λ³΅)
5 mod 2 = 1
2 mod 1 = 0
λλ¨Έμ§ κ°μ΄ 0μ΄ λμμ λ, λ§μ§λ§ μ°μ°μμ λλλ μλ‘ μ¬μ©λ 1μ΄ 12μ 5μ μ΅λ곡μ½μκ° λλ€.
κ²°κ³Όμ μΌλ‘ λ°λ³΅λλ modμ°μ°μ μννκΈ° μν΄μλ λ€μκ³Ό λ°λ³΅λ¬Έ λ° μ¬κ·ν¨μλ₯Ό μ¬μ©ν μ μλ€.
λ°λ³΅λ¬Έ
function GCD(a, b){
let tmp;
while(b){
tmp = a % b;
a = b;
b = tmp;
}
return a;
}
//a > b
μ¬κ·ν¨μ
function GCD(a, b) {
if(b === 0) return a;
else return GCD(b, a % b);
}
// a > b
μ΄λ κ² κ΅¬ν μ΅λ곡μ½μ(GCD)μ κ°μ΄ μ μ λλ©΄, μ΅μ곡배μ(LCM)λ λ€μκ³Ό κ°μ μ°μ°μ ν΅ν΄ μ½κ² ꡬν μ μλ€.
(μ΅μ곡배μ) = (λ μμ°μμ κ³±) / (μ΅λ곡μ½μ)
νλ₯Ό ν΅ν΄ νμΈν΄λ³΄κΈ°
SQ | GCD(a, b) | a | b | tmp(a % b) |
1 | GCD(12, 5) | 12 | 5 | 2 |
2 | GCD(5, 2) | 5 | 2 | 1 |
3 | GCD(2, 1) | 2 | 1 | 0 |
μ½λ
function GCD(a, b) {
if(a === 0) return b;
else return GCD(b % a, a);
}
function solution(n, m) {
let answer = [];
answer[0] = GCD(n, m);
answer[1] = n * m / GCD(n, m);
return answer;
}
'μκ³ λ¦¬μ¦ > νκ·Έ λ³ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλΌν μ€ν λ€μ€μ 체]μμμ°ΎκΈ° (0) | 2021.10.09 |
---|---|
[그리λ]ꡬλͺ λ³΄νΈ (0) | 2021.09.04 |
[λ μ μκ³ λ¦¬μ¦]λμ κ΅ν (0) | 2021.08.17 |
[LIS]μ΅λ λΆλΆ μ¦κ° μμ΄ (0) | 2021.08.16 |
[λμ κ³νλ²]κ³λ¨μ€λ₯΄κΈ° (0) | 2021.08.15 |