View

BJ_1789) 수들의 합

Melody:) 2022. 12. 12. 10:12

문제

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?

입력

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

출력

첫째 줄에 자연수 N의 최댓값을 출력한다.

 

예제 입력 1 

200

예제 출력 1 

19

나의 풀이

규칙을 찾기위해 S가 19일때, N을 구하는 과정을 계산해보았다.

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
Share Link
reply
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31