코딩테스트/Python
[프로그래머스] 숫자의 표현
yo~og
2021. 9. 6. 22:31
내 코드
def solution(n):
answer = s = 0
last = n
for i in range(n,-1,-1):
if s > n:
s-=last
last-=1
if s==n:
answer+=1
s+=i
return answer
연속된 숫자 합이 n이 되는 갯수를 찾는 문제이다.
내 코드는 i가 15,14,13,12,11...0 이렇게 반복된다. 15는 n과 같으므로 answer을 1 더해준다. 15+14는 15보다 크므로 가장 큰 숫자(last)를 빼준다. 그다음 14+13을 계산해도 15보다 크므로 14를 빼준다. 이렇게 반복하다보면 8+7일때가 온다. 이때는 15와 같으니 answer을 더해준다. 8+7+6 은 15 보다 크므로 7+6+5를 구한다. 이렇게 가다보면 6+5+4 가 걸리게 되는데 이때도 answer을 더해준다. 나는 이런식으로 풀었다.
다른사람들 코드를 보면 거의 이중 for문을 돌렸다. 그거보단 내 코드가 더 효율적인것같다!!!