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

Back to Square One·2022년 9월 25일
0

프로그래머스 lv2

목록 보기
5/22

문제

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15
    자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.

제한사항

  • n은 10,000 이하의 자연수 입니다.

입출력 예

풀이

문제는 단순히 연속된 수를 이중 for문으로 돌면서 더했을 때 n값이 되면 count하면 된다.

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
                continue
                
            
    return answer

처음 위에와 같이 풀었을 때 효율성 테스트에서 시간초과가 무지막지하게 나왔다.....
원인을 찾아보니 n값을 초과했을 때는 for문을 중단시켜주고 쓸데없는 계산을 하지 않게 해야하는데 불필요한 작업을 하고 있던 것이다. 따라서 추가한 코드는.. 사진 아래에 첨부.

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
                continue
            elif sum > n :
                break
                
            
    return answer
profile
다시 시작하는 개발

0개의 댓글