내 코드
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문을 돌렸다. 그거보단 내 코드가 더 효율적인것같다!!!
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] N개의 최소공배수 (0) | 2021.09.07 |
---|---|
[프로그래머스] 최솟값 만들기 (0) | 2021.09.07 |
[프로그래머스] JadenCase 문자열 만들기 (0) | 2021.09.06 |
[프로그래머스] 예산 (0) | 2021.09.06 |
[프로그래머스] [카카오 인턴] 키패드 누르기 (0) | 2021.09.06 |