[백준 1789] 수들의 합.py

🐥·2022년 1월 10일
0

백준

목록 보기
6/18

문제 이해하기

⦁ 자연수를 중복시키지 않고 합이 S인 자연수의 개수

핵심

⦁ 작은 수부터 하나하나 더하기 (1, 2, 3, ... )

소스코드

S = int(input())
cnt = 0
result = 0

for i in range(1, S+1):
    cnt += i 
    result += 1
    if (cnt == S): break
    if ((S - cnt) <= i): # 남은 값이 자연수보다 작거나 같으면
        break

print(result)

풀이과정을 어렵게 생각했더니 코드가 길게 나왔다. 역시나 실패하고😑
사람들의 채점현황을 봤는데 어라라? 코드가 다들 짧게 나왔다.
여기서 풀이과정이 어렵지 않다는 것을 캐치할 수 있었다.

다른 사람의 코드를 보니

s = int(input())
n = 1
while n * (n + 1) / 2 <= s:
    n += 1
print(n - 1)

출처 : https://pacific-ocean.tistory.com/80

너무나 간결했다.
위에 코드도 1부터 차례대로 더한 결과를 반영하는 것이다. 나도 손으로는 n(n+1)/2로 계산했는데 왜 코드로 적응시킬 생각을 못했는지 안타깝다.
머리와 손을 일치시켜야겠다.😊

profile
열심히 공부하자!!

0개의 댓글