[백준] 1789번 - 수들의 합
아이디어
서로 다른 N개의 자연수의 합이 S일 때 N의 최댓값을 구하는 문제이다.
1부터 1씩 증가시키면서 200에 가까운 수를 만든다고 생각해보자.
예를 들어 S가 200이라면 1+2+...+19 = 190이라는 값을 가지게 된다.
19 다음은 20인데 20을 더하면 200을 초과하게 된다. 따라서 마지막 값을 19가 아닌 29로 더해줘야 정확히 200이라는 합이 나온다.
=> 이러한 과정을 반대로 뺄셈을 활용하여 생각해보자
S값 = 200, num = 1부터 1씩 증가시킨 값
S값에서 num을 0이 될 때까지 빼준다. 이때, num값이 남은 S값보다 클 경우, 뺄셈을 중단한다.
최종 코드
S = int(input())
num = 1
while True:
if S >= num:
S = S-num
num += 1
else:
break
print(num-1)
Author And Source
이 문제에 관하여([백준] 1789번 - 수들의 합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yerimstar/백준-1789번-수들의-합저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)