백준(1789) - 수들의 합 Python

최대 1 분 소요

백준(1789) - 수들의 합

문제풀이: 이진탐색, 파이썬

해결방법

예시)

# 입력 #
200

# 출력결과 #
19
  • end를 930000 으로 정한 것은 문제의 s의 최대 값이 4,294,967,295 이기 때문에 대충 계산해보고 설정한 것 이다.
s = int(input())

dp = [0] * 930001
cnt = 0
for i in range(1, 930000):
    cnt += i
    dp[i] = cnt

start = 0
end = 930000

while start <= end:
    mid = (start + end) // 2
    if dp[mid] > s:
        end = mid - 1
    else:
        start = mid + 1

print(end)

댓글남기기