Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[백준-Python] 1789번: 수들의 합 본문

🥧 Python/⚙️ 코딩테스트

[백준-Python] 1789번: 수들의 합

썸머몽 2023. 2. 15. 14:06
728x90
 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

 

풀이

서로 다른 N개의 자연수의 합이 S 일 때 자연수 N의 최댓값을 구해야 한다.

서로 다른 N개의... 뭐? 싶은데 초등학생 때 배운 공식이 있다.

S = n(n+1)/2

S 를 6라고 해보자

 

2S = n(n+1)

12 = n(n+1)

n = 3

그럼 최댓값은 3이 되는 것이다.

 

이걸 while 문으로 계속 반복해보자.

n = 1

while n*(n+1)/2 <= S :

    n += 1

 

n 값이 1개씩 커지면서 n(n+1)/2이 S와 같을 때를 찾는다.

찾으면 여기서 n-1을 해주면 최댓값을 구할 수 있다.

 

코드

S = int(input())
n = 1
while n*(n+1)/2 <= S :
    n += 1
print(n-1)
728x90