백준 1789 수의 합

청천·2022년 7월 27일
0

백준

목록 보기
3/41

매우 쉽게 풀었으나 범위 설정 문제가 있었음.

풀이
최대에 집중.
서로 다른 n 개의 합이 10이라고 할 때, 최대 n 구하는 것을 생각해보자.
1,9
1,2,7
1,2,3,4
2,8
.
.
.

즉 최대 n은 가장 작은 수 부터 차례로 더한 것이다.

a = int(input())
total = 0
ans = 0
for i in range(1, a+1): # range(a)로 했다 낭패 봤다. a 까지 봐야되는 수가 있기 때문
    total += i
    if total > a: # a 를 넘으면 그 전 total 값에서 1만 계속 더해서 a를 만들수 있다.
        ans = i - 1 
        break
    if i == a: # range 끝 까지 갔는 데도 total에 도달 못하면 a 값을 준다. 이 부분이 재미 있었다. 
        ans = i
        break

print(ans)

ps 로 낮아진 자존감은 ps로 풀어야 하나 보다.

0개의 댓글