-Code
import sys
input = sys.stdin.readline
n = int(input())
dp = [i for i in range(n + 1)]
for i in range(1, n + 1):
for j in range(1, i):
if i < j * j:
break
if dp[i] > dp[i - j * j] + 1:
dp[i] = dp[i - j * j] + 1
print(dp[-1])
처음에 while로 해서 큰 수부터 빼주는 방법으로 시도하여 특정 값에서 다른 출력이 나와 실패를 하고 여러 입력값에 대한 개수를 직접 써보고 했으나 dp로 구현을 못해서 어디 값을 가져와야 하는지에 대해서 찾아보고 해결을 했으나 아쉬웠습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 17212번 달나라 토끼를 위한 구매대금 지불 도우미 (0) | 2022.05.12 |
---|---|
[백준/파이썬] 10211번 Maximum Subarray (0) | 2022.05.12 |
[백준/파이썬] 14501번 퇴사 (0) | 2022.05.12 |
[백준/파이썬] 12015번 가장 긴 증가하는 부분 수열 2 (0) | 2022.05.11 |
[백준/파이썬] 11055번 가장 큰 증가 부분 수열 (0) | 2022.05.11 |