[Programmers] - 숫자의 표현

오동훈·2021년 5월 15일
0

Programmers

목록 보기
41/64
post-thumbnail

1. Problem 📃

📚 출처 - 프로그래머스

문제 설명
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 이하의 자연수 입니다.

입출력 예

nresult
154

입출력 예 설명
입출력 예#1
문제의 예시와 같습니다.

2. Logic 👨‍🏫

  1. 자기 자신의 수를 제외한 것 중, 수를 일단 어디까지 비교해봐야 하나 분석해봤다.
    15와 같은 경우는 7+8이 마지막, 19같은 경우는 9+10이 마지막, 20은 10이 마지막이다.
    다음과 같은 경우들을 토대로 홀수는 n/2+1까지, 짝수는 n/2까지 비교하는 루틴을 볼 수 있다.

  2. 아 그리고, 자기 자신의 경우의 수 1가지가 있는데 그 1가지를 위해 끝까지 검사해주는 것은 효율성에 문제가 생긴다. 따라서 자기 자신의 경우의 수는 처음부터 추가해주고 시작했다.

3. Code 💻

1. 내가 푼 코드

def solution(n):
    count = 1
    for i in range(1, n//2+1):
        tmp = 0
        for j in range(i, n//2+2):
            tmp += j
            if (tmp >= n):
                if tmp == n:
                    count += 1
                else:
                    break
    return count
profile
삽질의 기록들🐥

0개의 댓글