본문 바로가기
백준 알고리즘

파이썬) 백준 알고리즘 | 1789번 : 수들의 합

by 코딩새내기_ 2022. 1. 27.

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)

댓글