coding test - python/Programmers

Programmers / 숫자의 표현 / Python 파이썬

sillon 2022. 5. 11. 21:44
728x90
반응형

 

*문제 출처는 프로그래머스에 있습니다.

문제 제목: 숫자의 표현(2단계)

문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12924


나의 풀이(테스트 케이스만 통과)

def solution(n):
    
    arr = [i for i in range(1,n+1)]
    cnt = 0
    
    for i in range(1,n+1):
        for j in range(i,n+1):
            tmp = sum(arr[i:j+1])
            if tmp == n:
                cnt += 1
    
    return cnt

 

모범답안

def solution(n):
    count = 0                      
    for i in range(1, n+1):         # 예시의 `15=15`도 있기 때문에 n+1 까지 반복문 실행
        sumN = 0                     
        for j in range(i, n+1):     # i값을 시작으로 반복문 실행
            sumN += j               # i값부터 계속해서 값을 더해준다
            if sumN == n:           # 더한 값이(sumN)이 n과 같다면 count +1, break
                count += 1          
                break
            if sumN > n:            # 더한 값(sumN)이 n보다 크다면 계산할 필요가 없음
                break
    return count

※ 알아야 할 것

  • 우선 문제에서 "연속한 자연수들로 표현 하는 방법"은 더하기만 생각하면 된다.
  • 연속된 숫자의 합이므로 하나의 값을 시작으로 다시 반복문을 실행시켜야 한다.
  • 계속해서 더해지는 값(sumN)이 n과 같다면 count+=1한 후, break
  • 계속해서 더해지는 값(sumN)이 n보다 커지는 순간 break

 

 

728x90
반응형