[파이썬] 백준 1660 : 캡틴 이다솜 (골드5)
풀이
방향성 생각
사면체 만드는데 필요한 블럭 단위를 미리 만들어놓는다
i개를 사용해서 만들 때, 블럭단위에 있는 t개 + dp[i-t]가 최소값인 경우 갱신
전체코드
N = int(input())
dp = [1e9]*(N+1)
tetra = [(n*(n+1)*(n+2))//6 for n in range(1,121) if (n*(n+1)*(n+2))//6 <= N]
for t in tetra:
dp[t] = 1
for i in range(2,N+1):
for t in tetra:
if i>t:
dp[i] = min(dp[i],dp[i-t]+1)
else:
break
print(dp[N])
코멘트
python으로 잘 안돌아감
$O(100N)$이라 안터질줄 알았는데 터져서 pypy로 풀이
'Algorithm > Dynamic Programming' 카테고리의 다른 글
[파이썬] 백준 11054 : 가장 긴 바이토닉 부분 수열 (골드4) (0) | 2024.12.26 |
---|---|
[파이썬] 백준 5557 : 1학년 (골드5) (0) | 2024.12.25 |
[파이썬] 백준 10251 : 운전 면허 시험 (플레5) (0) | 2024.11.19 |
[파이썬] 백준 1633 : 최고의 팀 만들기 (골드4) (0) | 2024.10.01 |
[파이썬] 백준 10942 : 팰린드롬? (골드4) (0) | 2024.08.04 |
[파이썬] 백준 9465 : 스티커 (실버1) (0) | 2024.08.01 |
[파이썬] 프로그래머스 : 산 모양 타일링 (레벨3) (0) | 2024.06.12 |
댓글