이진탐색을 사용하여 풀었다.
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)