[νλ‘κ·Έλλ¨Έμ€] Lv1: μ½λΌμΈ μΆμΈ‘
λ¬Έμ μ€λͺ
1937λ
Collatzλ μ¬λμ μν΄ μ κΈ°λ μ΄ μΆμΈ‘μ, μ£Όμ΄μ§ μκ° 1μ΄ λ λκΉμ§ λ€μ μμ
μ λ°λ³΅νλ©΄, λͺ¨λ μλ₯Ό 1λ‘ λ§λ€ μ μλ€λ μΆμΈ‘μ
λλ€. μμ
μ λ€μκ³Ό κ°μ΅λλ€.
1-1. μ λ ₯λ μκ° μ§μλΌλ©΄ 2λ‘ λλλλ€.
1-2. μ λ ₯λ μκ° νμλΌλ©΄ 3μ κ³±νκ³ 1μ λν©λλ€.
2. κ²°κ³Όλ‘ λμ¨ μμ κ°μ μμ μ 1μ΄ λ λκΉμ§ λ°λ³΅ν©λλ€.
μλ₯Ό λ€μ΄, μ£Όμ΄μ§ μκ° 6μ΄λΌλ©΄ 6 β 3 β 10 β 5 β 16 β 8 β 4 β 2 β 1 μ΄ λμ΄ μ΄ 8λ² λ§μ 1μ΄ λ©λλ€. μ μμ μ λͺ λ²μ΄λ λ°λ³΅ν΄μΌ νλμ§ λ°ννλ ν¨μ, solutionμ μμ±ν΄ μ£ΌμΈμ. λ¨, μ£Όμ΄μ§ μκ° 1μΈ κ²½μ°μλ 0μ, μμ μ 500λ² λ°λ³΅ν λκΉμ§ 1μ΄ λμ§ μλλ€λ©΄ β1μ λ°νν΄ μ£ΌμΈμ.
μ νμ¬ν
μ
λ ₯λ μ, numμ 1 μ΄μ 8,000,000 λ―Έλ§μΈ μ μμ
λλ€.
μ μΆλ ₯ μ
n | result |
---|---|
6 | 8 |
16 | 4 |
626331 | -1 |
function soliution(num) {
// λ¨, μ£Όμ΄μ§ μκ° 1μΈ κ²½μ°μλ 0μ,
if (num === 1) return 0;
// λͺλ²μ΄λ λ°λ³΅ν΄μΌ νλμ§ λ°ννλ ν¨μ, solutionμ μμ±
let answer = 0;
//μ
λ ₯λ μκ° μ§μλΌλ©΄ 2λ‘ λλλλ€. : μ
λ ₯λ μκ° νμλΌλ©΄ 3μ κ³±νκ³ 1μ λν©λλ€.
let collatzNum = num % 2 === 0? num/2 :num*3+1;
// κ²°κ³Όλ‘ λμ¨ μμ κ°μ μμ
μ 1μ΄ λ λκΉμ§ λ°λ³΅ν©λλ€.
while( ){
}
}
λ¬Έμ μ
λ°λ³΅μ ν΄μΌν νμ΄ μ½λλ₯Ό λ³μμ ν λΉ ν΄λ²λ¦¬κ³ μ΄λ»κ² ν΄μΌν μ§ κ°μ μ‘μ§ λͺ» ν¨.
answerμ ν λΉν μ½λλ₯Ό λ°λ³΅νλ €λ©΄ κΈ°λ₯μ ν΄μΌνλ ν¨μλ‘ μ μ©ν΄μΌνλ 건κ°..?
μ΄λ»κ² λ°λ³΅λ¬Έμ ν΅ν΄
μ answerμ λ€μ΄κ° μ½λλ₯Ό μ μ©ν μ§ κ·Έ μ΄μμ μ§λλ₯Ό λκ°μ§ λͺ» ν΄,,,
κ²°κ΅ νμ΄λ₯Ό μ΄ν΄λ³΄μλ€.
λ€λ₯Έ μ¬λ νμ΄
#1
function solution(num) {
var answer = 0;
while(num !=1 && answer !=500){
num%2==0 ? num = num/2 : num = num*3 +1;
answer++;
}
return num == 1 ? answer : -1;
}
μ κ°μ€λ½κ²λ νμ΄μ λ΄κ° μνκ³ μ νλ νμ΄λ₯Ό κ·Έλλ‘ νμ΄μ£Όμ κ°λ°μκ° κ³μ ¨λ€..!
ꡬν μ κ·Ό λ²
λͺλ²μ΄λ λ°λ³΅ν΄μΌ νλμ§ λ°ννλ ν¨μ, solutionμ μμ±
λ³μ answer = 0
κ²°κ³Όλ‘ λμ¨ μμ κ°μ μμ
μ 1μ΄ λ λκΉμ§ λ°λ³΅ν©λλ€.
μ
λ ₯λ μκ° μ§μλΌλ©΄ 2λ‘ λλλλ€. : μ
λ ₯λ μκ° νμλΌλ©΄ 3μ κ³±νκ³ 1μ λν©λλ€.
while(num !=1 && answer !=500){
num%2==0 ? num = num/2 : num = num*3 +1;
answer++;
}
// μ΄μ κ°μ΄ μμ μ΄ λ μ μμ κ² κ°λ€.
while(num !=1 && answer !=500){
num = num%2==0 ? num/2 : num*3 +1;
answer++;
}
#2
function collatz(num, count = 0) {
return (num == 1) ? ((count >= 500) ? -1 : count) : collatz((num % 2 == 0) ? num / 2 : (num * 3) + 1, ++count);
}
ꡬν μ κ·Ό λ²
λ³μμ ν λΉν κ°μ λ°λ³΅ν΄μ μνλ κ°μ μ»μλ €λ©΄ ν¨μλ₯Ό ν΅ν΄ μ¬ νΈμΆν΄μ κΈ°λ₯μ ν΄λ΄λ κ²λ κ°λ₯νμ§λ§(= μ¬κ·),
λ°λ³΅λ¬Έ λ΄μ μ μ©νλ €λ λ³μ ννμμ μ μ©νμ¬ μ»κ³ μ νλ κ°μ μ¬ν λΉμ΄ κ°λ₯νλ€.
μ¦, λ°λ³΅λ¬Έ μ체λ κΈ°λ₯μΈμ ..!