[BOJ] 1789번 | 수들의 합 (Python3)
2022. 7. 18. 00:21ㆍ카테고리 없음
문제 살펴보기
나름 고민해서 풀었는데, 다른 사람들은 어떻게 풀었나 보다가 현타가 왔습니다.
고등학교 수학 풀 때 많이 봤던 1부터 n까지의 합계 공식을 이용할 생각을 못했었네요.
위의 식을 이용하면 훨씬 간단하게 풀 수 있었네요. 문제가 원하는 답변은 개수지, 어떤 수들의 조합이 아닌데 거기에 너무 집중했었나 봅니다. 부끄럽지만 그래도 제 코드는 남겨 놓겠습니다.
소스코드
S = int(input())
def Solution(S):
cumulativeSum = 0
N = 0
num = 1
while True:
cumulativeSum += num
remainedAMount = S - cumulativeSum
if remainedAMount == 0:
N += 1
return N
elif remainedAMount < num:
while True:
cumulativeSum -= num
remainedAMount = S - cumulativeSum
if remainedAMount > num:
cumulativeSum += remainedAMount
N += 1
return N
N -= 1
num -= 1
N += 1
num += 1
print(Solution(S))
42억까지 범위인 수를 주는데도 통과를 어떻게 했나 신기하네요.
역시 다른 사람들의 코드를 보면서 배우는 점도 많네요.
728x90
반응형