-
[Algo RhythmπΊπ] BOJ 17626. Four SquaresAlgo RhythmπΊπ/BOJ 2020. 8. 24. 15:06
π λ¬Έμ μ€λͺ
λΌκ·Έλμ£Όλ 1770λ μ λͺ¨λ μμ°μλ λ· νΉμ κ·Έ μ΄νμ μ κ³±μμ ν©μΌλ‘ ννν μ μλ€κ³ μ¦λͺ νμλ€. μ΄λ€ μμ°μλ 볡μμ λ°©λ²μΌλ‘ ννλλ€. μλ₯Ό λ€λ©΄, 26μ 52κ³Ό 12μ ν©μ΄λ€; λν 4^2 + 3^2 + 1^2μΌλ‘ ννν μλ μλ€. μμ¬μ μΌλ‘ μμ°μ λͺ μλ€μκ² κ³΅ν΅μ μΌλ‘ μ£Όμ΄μ§λ λ¬Έμ κ° λ°λ‘ μμ°μλ₯Ό λ· νΉμ κ·Έ μ΄νμ μ κ³±μ ν©μΌλ‘ λνλ΄λΌλ κ²μ΄μλ€. 1900λ λ μ΄λ°μ ν μμ°κ°κ° 15663 = 125^2 + 6^2 + 1^2 + 1^2λΌλ ν΄λ₯Ό ꡬνλλ° 8μ΄κ° κ±Έλ Έλ€λ λ³΄κ³ κ° μλ€. μ’ λ μ΄λ €μ΄ λ¬Έμ μ λν΄μλ 56μ΄κ° κ±Έλ Έλ€: 11339 = 105^2 + 15^2 + 8^2 + 5^2.
μμ°μ nμ΄ μ£Όμ΄μ§ λ, nμ μ΅μ κ°μμ μ κ³±μ ν©μΌλ‘ νννλ μ»΄ν¨ν° νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
μ λ ₯μ νμ€μ λ ₯μ μ¬μ©νλ€. μ λ ₯μ μμ°μ nμ ν¬ν¨νλ ν μ€λ‘ ꡬμ±λλ€. μ¬κΈ°μ, 1 ≤ n ≤ 50,000μ΄λ€.μΆλ ₯
μΆλ ₯μ νμ€μΆλ ₯μ μ¬μ©νλ€. ν©μ΄ nκ³Ό κ°κ² λλ μ κ³±μλ€μ μ΅μ κ°μλ₯Ό ν μ€μ μΆλ ₯νλ€.π― μ΄λ»κ² νμλ
import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_17626 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] dp = new int[n + 1]; dp[0] = 0; dp[1] = 1; for(int i = 2; i <= n; i++) { int min = Integer.MAX_VALUE; for(int j = 1; j * j <= i; j++) { min = Math.min(min, dp[i - j * j]); } dp[i] = min + 1; } System.out.println(dp[n]); } }
π§ μ μ λ κ² νμλ
Bottom-up λ°©μμ Dynamic Programmingμ μ΄μ©νλ€.
DP λμκ° λ¬μ§λ§ μμ΄ λ μ€λ₯΄μ§ μμ μΌλ¨ λ€μκ³Ό κ°μ΄ λμ΄νλ€.
μ€λ κ΄μ°°ν κ²°κ³Ό μ΅μ μ ν΄λ₯Ό ꡬνλ μμ λ°κ²¬νκ³ κ·Έκ²μ λ€μκ³Ό κ°λ€.
dp[i] = min(dp[i - j * j]) + 1
μλ§ λ³΄λ©΄ μ΄ν΄νκΈ° μ΄λ ΅μ§λ§ μμ μ ν¨κ» 보면 μ΄ν΄νκΈ° μ½λ€.
Nμ΄ 4μΈ κ²½μ° 4λ₯Ό μμ°μμ μ κ³±μλ€μ ν©μΌλ‘ νννκΈ° μν΄ μ¬μ©ν μ μλ μμ°μλsqrt(4) μ΄νμ μμ°μμ΄λ€. μ¦, 2 μ΄νμ μμ°μμ μ κ³±μλ€μ ν©μΌλ‘ 4λ₯Ό λνλΌ μ μλ€.
4λ 1μ μ κ³±μλ₯Ό μ¬μ©ν΄μ ννν κ²½μ° 3μ λ§λ€ λ μ°μΈ 1^2 + 1^2 + 1^2μμ 1^2λ§ λνλ©΄ λκΈ° λλ¬Έμ 3 + 1 = 4κ°μ μμ°μκ° μ°μΈλ€.
λ°λ©΄μ 2μ μ κ³±μλ₯Ό μ¬μ©ν΄μ ννν κ²½μ° 2μ μ κ³±μλ§ μ¬μ©λκΈ° λλ¬Έμ 1κ°μ μμ°μκ° μ°μΈλ€.
λ μ€ 2μ μ κ³±μλ₯Ό μ¬μ©νλ κ²½μ°κ° λ μ μ μμ μμ°μλ₯Ό μ¬μ©νκΈ° λλ¬Έμ 2μ μ κ³±μλ₯Ό μ¬μ©νλ κ²½μ°λ₯Ό μ ννλ€.
π 무μμ λ°°μ λ
DP μ°Έ μ½μ§ μλ€ γ γ
'Algo RhythmπΊπ > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algo RhythmπΊπ]BOJ 13458 - μνκ°λ (0) 2021.03.09 [Algo RhythmπΊπ] BOJ 16288. Passport Control (0) 2020.09.03 [Algo RhythmπΊπ] BOJ 17528. Two Machines (0) 2020.08.26 [Algo RhythmπΊπ] BOJ 17521. Byte coin (0) 2020.08.24 [Algo RhythmπΊπ] BOJ 17520. Balanced String (0) 2020.08.24