[알고리즘/백준] 1789번 : 수들의 합(python)

유현민·2022년 7월 4일
0

알고리즘

목록 보기
217/253

이진탐색을 사용하여 풀었다.

1부터 N 까지의 합은 N * (N + 1) // 2

N의 최대값은 항상 전체 합 보다 작거나 같다.

def bi_sec(l, r):
    global n
    global ans
    while l <= r:
        mid = (l + r) // 2
        if mid * (mid + 1) // 2 <= n:
            ans = mid
            l = mid + 1
        else:
            r = mid - 1


if __name__ == "__main__":
    n = int(input())
    ans = 0
    bi_sec(1, n)
    print(ans)
profile
smilegate megaport infra

0개의 댓글