백준 알고리즘
파이썬) 백준 알고리즘 | 1789번 : 수들의 합
코딩새내기_
2022. 1. 27. 14:05
https://www.acmicpc.net/problem/1789
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.

백준 1789 수들의 합 문제입니다.
처음에 그냥 i += 1 이렇게 접근했더니 시간초과가 떠서..
n(n+1)/2 < input(N)에서 n의 최댓값을 구하는 방법으로 접근했습니다.
수식을 정리하면\[n\le{\sqrt{2N +\frac{1}{4}}}-\frac{1}{2}\] 인 n의 최댓값을 구해야 합니다.
그래서 위 수식을 구한다음 내림으로 처리해서 풀었습니다.
import sys
import math
N = int(sys.stdin.readline())
result = math.floor((2*N+1/4)**0.5-1/2)
print(result)