1 분 소요

문제 링크

내 풀이

def solution(n):
    num = 1
    start_num = 1
    count = 1
    while start_num < (n / 2):
        total = 0
        while total < n:
            total += num
            if total == n:
                count += 1
                break
            num += 1
        start_num += 1
        num = start_num
        
    return count       

다른 풀이

def solution(n):
    
    # 결과값을 1로 설정(자기 자신의 수를 말함)
    # 예) 15 = 15 또한, 한 개의 표현
    result = 1
    
    # 1부터 n의 절반까지 순회
    # 연속된 자연수들의 합이 n을 초과하는 경우는 고려하지 않아도 되기 때문
    for i in range(1, n//2 + 1):
        
        # 각 반복에서의 연속된 자연수들의 합을 저장할 변수를 0으로 초기화
        total = 0
        
        # 연속된 자연수들을 더하는 동안 그 합이 n보다 작은 경우에는 계속 반복
        while total < n:
            
            total += i
            
            # total 값이 n과 같다면 결과값을 1 증가시키고, 이 반복문을 종료
            if total == n:
                result += 1
                break
            
            i += 1 # 다음 연속된 자연수로 넘어갑니다.
            
    return result
출처: https://1ets-just-do-it.tistory.com/109 [파이썬은 신이야🔥🔥🔥:티스토리]

풀이 해석

  • for문과 while문을 이용함

배울 점

  • while문 두개가 아니라 하나는 for문으로 표현하는게 더 좋았을듯

댓글남기기