반응형
풀이
- 서로 다른 N개의 자연수의 합이 S라 하고 S를 알 때 N의 최댓값을 구하는 문제이다.
- N을 가장 크게 만들기 위해서는 1부터 계속 더해가면서 그 값을 만들면 된다.
- 1,2,3... 을 S에서 뺴주면서 S < 빼는 수 일 때 break 하고 그때의 값을 출력한다.
- ex) S = 5 -> 1 ( S=4 ) , 2 ( S=2) , 3 ( S=2 < 3 이므로 남은 S값인 2를 모두 전 값에 더해버림)
- 결과적으로 S = 5 인 경우는 1 , 4 로 이루어질 수 있다.
import sys
a = int(sys.stdin.readline())
cnt = 1
ans = 0
while True:
if a < cnt:
break
else:
a = a - cnt
cnt += 1
ans += 1
print(ans)
반응형
'코딩 > 백준' 카테고리의 다른 글
알고리즘 - Python / 백준 - 1991번 : 트리 순회 (0) | 2021.09.26 |
---|---|
알고리즘 - Python / 백준 - 17070번 : 파이프 옮기기 1 (0) | 2021.09.26 |
알고리즘 - Python / 백준 - 11725번 : 트리의 부모 찾기 (0) | 2021.09.25 |
알고리즘 - Python / 백준 - 1932번 : 정수 삼각형 (0) | 2021.09.21 |
알고리즘 - Python / 백준 - 11053번 : 가장 긴 증가하는 부분 수열 (0) | 2021.09.20 |