[λ°±μ€] 4673λ²_μ νλλ²
λ¬Έμ Silver 5
μ ν λλ²λ 1949λ μΈλ μνμ D.R. Kaprekarκ° μ΄λ¦ λΆμλ€. μμ μ μ nμ λν΄μ d(n)μ nκ³Ό nμ κ° μ리μλ₯Ό λνλ ν¨μλΌκ³ μ μνμ. μλ₯Ό λ€μ΄, d(75) = 75+7+5 = 87μ΄λ€.
μμ μ μ nμ΄ μ£Όμ΄μ‘μ λ, μ΄ μλ₯Ό μμν΄μ n, d(n), d(d(n)), d(d(d(n))), ...κ³Ό κ°μ 무ν μμ΄μ λ§λ€ μ μλ€.
μλ₯Ό λ€μ΄, 33μΌλ‘ μμνλ€λ©΄ λ€μ μλ 33 + 3 + 3 = 39μ΄κ³ , κ·Έ λ€μ μλ 39 + 3 + 9 = 51, λ€μ μλ 51 + 5 + 1 = 57μ΄λ€. μ΄λ°μμΌλ‘ λ€μκ³Ό κ°μ μμ΄μ λ§λ€ μ μλ€.
33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...
nμ d(n)μ μμ±μλΌκ³ νλ€. μμ μμ΄μμ 33μ 39μ μμ±μμ΄κ³ , 39λ 51μ μμ±μ, 51μ 57μ μμ±μμ΄λ€. μμ±μκ° ν κ°λ³΄λ€ λ§μ κ²½μ°λ μλ€. μλ₯Ό λ€μ΄, 101μ μμ±μκ° 2κ°(91κ³Ό 100) μλ€.
μμ±μκ° μλ μ«μλ₯Ό μ ν λλ²λΌκ³ νλ€. 100λ³΄λ€ μμ μ ν λλ²λ μ΄ 13κ°κ° μλ€. 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97
10000λ³΄λ€ μκ±°λ κ°μ μ ν λλ²λ₯Ό ν μ€μ νλμ© μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
μ λ ₯μ μλ€.
μΆλ ₯
10,000λ³΄λ€ μκ±°λ κ°μ μ ν λλ²λ₯Ό ν μ€μ νλμ© μ¦κ°νλ μμλ‘ μΆλ ₯νλ€.
public class Main{
public static int[] arr = new int[10000];
public static void main(String[] args) {
for(int i =0 ; i < arr.length ; i++) {
self_number(i+1);
}
for(int i= 0 ; i< arr.length-1 ; i++) {
if(arr[i] == 0) System.out.println(i+1);
}
}
public static void self_number(int n){
int dn = n;
while(n>0) {
dn += n%10;
n /= 10;
}
if(dn < 10000) {
arr[dn-1] ++;
}
}
}
μ²μμΌλ‘ λμ¨ Silverλ±κΈ λ¬Έμ !
λ¬Έμ μ½κ³ μ΄ν΄νλ κ²λ§μΌλ‘λ λ§μ μκ°μ΄ κ±Έλ Έλ€ γ ^γ
μ°μ μμ±μλ‘ μ°μ΄λ μλ₯Ό μ μ μλ λ°°μ΄μΈ arrλ₯Ό λ§λ€κ³ , μμ±μλ₯Ό ꡬνλ ν¨μ self_numberμ λ§λ€μλ€.
μ²μμλ self_numberλ₯Ό μ¬κ·λ‘ νμ¬, return self_number(dn)μ νμμΌλ‘ κ°μ λΉ λ₯΄κ² ꡬνλ € νμΌλ StackOverFlow μ€λ₯κ° λ¬λ€...γ γ γ μ¬κ·ν¨μκ° λλμ§ μμμ κ·Έλ°κ±΄κ° μ μ΄ μλ¬κ° λ¬λμ§ μ ννκ² μμ§λ λͺ»νκ² λ€..
μλ¬΄νΌ mainμμ arr.lengthκΉμ§ self_numberν¨μλ₯Ό μ λΆ μ€ννλ λ°©λ²μΌλ‘ μ ν..
λ΅μ λ§μμ§λ§ κ΅μ₯ν λΉν¨μ¨μ μΈ μ½λλΌκ³ μκ°νλ€.
μΆν 리ν©ν λ§ ν νμκ° μμ κ² κ°λ€!