1699:제곱수의 합

https://www.acmicpc.net/problem/1699

틀린 풀이

  1. d[i] = i의 제곱수의 항의 최소 개수

  2. n과 가장 가까운 제곱수를 찾음

  3. d[n-(n과 가장 가까운수의 제곱수)] + 1

  4. +1을 하는 이유

    • 제곱수 자체도 하나 이기 때문에
  5. 예를 들어

    • d[7] = d[ 7 - 2^2 ] + 1 = d[3] + 1 이라고 생각했다
  6. 하지만, 위의 예시에서, d[3]이 가장 작은 값이라는 보장이 없다

  7. 즉, 가장 가까운 제곱수를 찾는 것이 틀림

img

맞는 풀이

  1. 예를 들어 ,

    • d[25] 를 구하려고 할때,
    • d[25-1^2] + 1
    • d[25-2^2] + 1
    • d[25-3^2] + 1
    • d[25-4^2] + 1
  2. min 값이 답

img

Comments