본문 바로가기

코딩테스트/Python

[프로그래머스] 숫자의 표현

내 코드

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문을 돌렸다. 그거보단 내 코드가 더 효율적인것같다!!!