dp[12],,
그를조심해,,
# 입력 속도 개선
import sys
input = sys.stdin.readline
# n 입력
n = int(input())
# dp 설계
dp = [
0 for _ in range(n+1)
]
# 제곲값들 넣어줄 리스트 만들기
s = [i**2 for i in range(1, 317)]
# dp 채워넣기
for i in range(1, n+1):
# 최솟값 담아줄 리스트
min_list = []
# 1 ~ i 사이까지의 j 값 중
for j in s:
# 뺄 제곱수가 i보다 크다면
if j > i:
break
# 뺄 제곱수가 i보다 작다면
# 최솟값 후보리스트에 올리기
min_list.append(dp[i-j])
# dp에 추가해줄 값 선정 후 + 1
dp[i] = min(min_list) + 1
# 출력
print(dp[-1])
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
[백준_11660] 구간 합 구하기 5 python (0) | 2022.07.21 |
---|---|
[백준_9657] 돌게임 3 python (0) | 2022.07.20 |
[백준_14494] 다이나믹이 뭐예요? python (0) | 2022.07.19 |
[백준_15989] 1,2,3더하기 4 python (0) | 2022.07.18 |
[백준_16194] 카드 구매하기2 python (0) | 2022.07.17 |