728x90
반응형
https://www.acmicpc.net/problem/1699
x = int(input())
dp = [0] * (x+1)
for i in range(1, x+1):
dp[i] = i
for j in range(1, i):
if (j * j) > i:
break
dp[i] = min(dp[i], dp[i - j**2] + 1)
print(dp[x])
python으로 제출하면 시간초과가 난다. pypy3으로 제출했다.
32, 64, 128 등의 반례를 찾았기 때문에
가까운 제곱수 항 개수를 생각하는 것이 아니라
여태까지 나온 모든 제곱수 항을 확인해봐야한다는 것에 착안해야한다.
728x90
반응형
'Computer > PS' 카테고리의 다른 글
[프로그래머스] 레벨2 위장 - 해시 파이썬 python (0) | 2020.11.14 |
---|---|
[프로그래머스] 레벨2 올바른 괄호- 파이썬 python (0) | 2020.11.13 |
[프로그래머스] 레벨2 오픈채팅방 - 파이썬 python (0) | 2020.11.13 |
백준 python 1753번 최단경로 (다익스트라 알고리즘) (0) | 2020.11.09 |
백준 python 2193번 - 이친수 (0) | 2020.11.09 |