[BaekJoon] 17626λ² Four Squares
βΆ λ¬Έμ : https://www.acmicpc.net/problem/17626
17626λ²: Four Squares
λΌκ·Έλμ£Όλ 1770λ μ λͺ¨λ μμ°μλ λ· νΉμ κ·Έ μ΄νμ μ κ³±μμ ν©μΌλ‘ ννν μ μλ€κ³ μ¦λͺ νμλ€. μ΄λ€ μμ°μλ 볡μμ λ°©λ²μΌλ‘ ννλλ€. μλ₯Ό λ€λ©΄, 26μ 52κ³Ό 12μ ν©μ΄λ€; λν 42 + 32 + 1
www.acmicpc.net
βΆ μ½λ :
const input = require('fs').readFileSync('BaekJoon/testcase.txt').toString().trim().split('\n');
let n = Number(input[0]);
const dp = Array(50001);
dp[0] = 0;
dp[1] = 1;
for(let i = 1; i < n+1; i++){
let count = 0;
let temp = i;
while(temp != 0){
const num = parseInt(Math.sqrt(temp)) ** 2;
temp -= num;
count += 1;
}
dp[i] = count;
for(let j = 1; j < parseInt(Math.sqrt(i)) + 1; j++){
dp[i] = Math.min(dp[i], dp[j ** 2] + dp[i - (j**2)]);
}
}
console.log(dp[n])
βΆ λ¬Έμ νμ΄ :
1. DP μ κ΄λ ¨νμ¬ μ‘°κΈμ μκ°λ κΈΈκ²ν΄μΌνκ³ λ²κ±°μ κ²μμ ν΄λ³΄μλ€.
[μ°Έμ‘°] : https://velog.io/@kyy00n/%EB%B0%B1%EC%A4%80-17626%EB%B2%88-Four-Squares
[λ°±μ€] 17626λ²: Four Squares
λΌκ·Έλμ£Όλ 1770λ μ λͺ¨λ μμ°μλ λ· νΉμ κ·Έ μ΄νμ μ κ³±μμ ν©μΌλ‘ ννν μ μλ€κ³ μ¦λͺ νμλ€.
velog.io
2. μμ μ¬μ΄νΈμμ Python μ μ΄μ©ν΄ ꡬνν μ½λλ₯Ό μ°Έκ³ ν΄ Javascript μ½λλ‘ λ³νν΄λ³΄λ©° λ°©λ²μ μ΄ν΄ν΄λ³΄μλ€.
3. μ΄κΈ° 1 ~ 50000κΉμ§μ μ«μλ³ μ΅μ λΌκ·Έλμ£Ό μλ₯Ό μ μ₯ν λ°°μ΄μΈ dp λ₯Ό μ μΈνκ³ 0κ³Ό 1μ μ΄κΈ°ννμλ€.
4. μ΄ν μ λ ₯λ n λ§νΌ λ°λ³΅λ¬Έμ μννλ€.
5. λ΄λΆμμλ countλ₯Ό 0μΌλ‘ μ΄κΈ°ννκ³ , temp λ³μμ i κ°μ ν λΉνλ€.
6. μ΄ν temp κ° 0μ΄ λ λκΉμ§ whileλ¬Έμ λλ©΄μ numμ΄λΌλ λ³μμ νμ¬ temp κ°μ μ κ³±κ·Όμ μ κ³±μ λΉΌμ€λ€. μ΄λ countλ 1μ μ¦κ°μμΌ tempμμ λΊ μ μλ κ°μ₯ ν° μ κ³±κ·Όμ μ κ³±μλ₯Ό λΊμλμ countλ₯Ό dpμ μ μ₯νλ€.
7. μ΄λ κ² μ°μ μ μΌλ‘ countκ°μ ꡬνλ€ forλ¬Έμ μ΄μ©ν΄ 1 ~ (i μ μ κ³±κ·Ό μ μλΆμ μ κ³± + 1)κΉμ§ μννλ©΄μ νμ¬ dpμ μ μ₯λ κ°κ³Ό ν΄λΉ μ(i)λ₯Ό λ§λ€ μ μλ μ κ³±μ κ²½μ°μ μ μ₯λ dp κ°μ ν©μ λΉκ΅νλ©° μ΅μκ°μ νμν λ€ dp[i]λ₯Ό μ λ°μ΄νΈνλ€. (λ¬Όλ‘ κ·Έλλ‘μΌ μ μκ² μ§)
8. μ΄λ κ² λ°λ³΅λ¬Έμ μνν λ€ dp[μ λ ₯ μ«μ]λ₯Ό μΆλ ₯νλ©΄ λμ ~