알고리즘 연습 [숫자의 표현]

숫자의 표현

문제

수학을 공부하던 민지는 재미있는 사실을 발견하였습니다. 그 사실은 바로 연속된 자연수의 합으로 어떤 숫자를 표현하는 방법이 여러 가지라는 것입니다. 예를 들어, 15를 표현하는 방법은
(1+2+3+4+5)
(4+5+6)
(7+8)
(15)
로 총 4가지가 존재합니다. 숫자를 입력받아 연속된 수로 표현하는 방법을 반환하는 expressions 함수를 만들어 민지를 도와주세요. 예를 들어 15가 입력된다면 4를 반환해 주면 됩니다

나의 풀이

def expressions(num):                  
    result = 1                         
    for i in range(1, (num + 1) // 2): 
        a = []                         
        while sum(a) < num:            
            a.append(i)                
            i += 1                     
            if sum(a) == num:          
                result += 1            
    return result 

리스트로 풀었는데, 굳이 리스트로 풀지 않아도 i값을 계속 더하는 변수를 만들어도 됐었음.

다른풀이

def expressions(num):
    return len([i  for i in range(1,num+1,2) if num % i is 0]) 

이런 패턴이 있는 줄 몰랐음. ㅇ0ㅇ