View
문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
예제 입력 1
200
예제 출력 1
19
나의 풀이
1+2+3+4+5까지 더하였을 때, 15가 나오고,
1+2+3+4+6까지 더하였을때, 21이 나왔다.
19는 15와 21 사이에 있으므로, 19를 구하려면, 21에서 2를 빼주먼 되었다.
16~20의 n을 구할 때도 동일한 방법으로, 6!=21인 6보다 작은 자연수1개를 빼주면 합을 구할 수 있었다.
따라서 답은 아래와 같다.
# 09:22 ~ 09:53
s = int(input()) # 1 ≤ S ≤ 4,294,967,295 40억
n = 1
for i in range(1,s):
factorial = i*(i+1)//2
if factorial == s:
n = i
break
elif factorial > s:
n = i-1
break
print(n)
'코딩테스트 > 백준' 카테고리의 다른 글
BJ_1260) DFS와 BFS (0) | 2022.12.13 |
---|---|
BJ_13305) 주유소 (0) | 2022.12.12 |
BJ_10162) 전자레인지 (0) | 2022.12.12 |
BJ_2217) 로프 (0) | 2022.11.28 |
BJ_10871) X보다 작은 수 성공 (0) | 2022.11.28 |
reply