알고리즘 연습

[알고리즘 연습] 백준 17626 (Four Squares, 자바스크립트)

산본개발자 2023. 6. 14. 09:16

문제

 

17626번: Four Squares

라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1

www.acmicpc.net


소스 코드

const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const input = require("fs")
  .readFileSync(filePath)
  .toString()
  .trim()
  .split("\n");

const n = +input[0];
const dp = new Array(n + 1).fill(0);
dp[1] = 1;
let min;

for (let i = 2; i <= n; i++) {
  min = Infinity;
  for (let j = 1; j * j <= i; j++) {
    const tmp = i - j * j;
    min = Math.min(min, dp[tmp]);
  }

  dp[i] = min + 1;
}

console.log(dp[n]);