⦁ 자연수를 중복시키지 않고 합이 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로 계산했는데 왜 코드로 적응시킬 생각을 못했는지 안타깝다.
머리와 손을 일치시켜야겠다.😊