본문 바로가기

알고리즘/python

[python/파이썬] 백준 1660 캡틴 이다솜

반응형

[문제 출처]

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

 

1660번: 캡틴 이다솜

캡틴 이다솜은 자신의 해적선에 적을 공격하기 위한 대포알을 많이 보관해 놓는다. 다솜이는 미적감각이 뛰어나기 때문에, 대포알은 반드시 사면체 모양으로 쌓아놓아야 한다고 생각한다. 사면

www.acmicpc.net

 

[문제 풀이]

 

PyPy3로 제출해야 시간 초과가 나오지 않는다.

import sys
input = sys.stdin.readline

n = int(input())

balls = []
num = 0
a = 1

while n > num:
    num += (a*(a+1))//2
    balls.append(num)
    a += 1

dp = [300001 for _ in range(n+1)]
for i in range(1,n+1):
    for b in balls:
        if b==i:
            dp[i] = 1
            break
        if b > i:
            break
        dp[i] = min(dp[i], dp[i-b]+1)
    
print(dp[n])
반응형