[백준/파이썬] 9151번 Starship Hakodate-maru 풀이

업데이트:



문제 정보


풀이

문제

주어진 수 n 이하에서 특정 수식으로 만들 수 있는 최대값을 찾는 문제입니다.

코드

def e3(n):
    a=int(n**(1/3))
    if (a+1)**3<=n:a+=1
    return a
while True:
    n=int(input())
    if n==0:break
    a=e3(n)
    b=e3(6*n)
    m=0
    for i in range(a+1):
        for j in range(b+1):
            t=i**3+j*(j+1)*(j+2)//6
            if t<=n:m=max(m,t)
    print(m)

설명

가능한 i, j 범위를 큐브루트 기준으로 제한해 완전탐색하고, t <= n을 만족하는 값 중 최댓값을 출력합니다.



댓글남기기