def solution(n):
answer = 0
for i in range(1, n+1):
sum = 0
for j in range(i, n+1):
sum += j
if sum == n:
answer += 1
break
elif sum > n:
break
return answer

참고 블로그: https://velog.io/@younge/Python-프로그래머스-숫자의-표현-연습문제Level-2
수학적 공식을 이용해 한 줄로 적은 코드가 있다.
def solution(n):
return len([i for i in range(1,n+1,2) if n % i is 0])
뭔 코드인지 이해가 안 되었지만, 참고한 블로거님께서 잘 설명해주셨다.
n 이하인 숫자 a부터 k개의 연속된 숫자의 합이 n이라고 가정한다면
a + (a+1) + (a+2) + ... + (a+k-1) = k(2a+k-1)/2 = n
a <= n
k < n
a,k : 자연수
위의 식을 정리를 이용한다. 위 식을 정리해보면 a = n/k + (1-k)/2가 된다.