문제
문제 설명
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
15 | 4 |
입출력 예 설명
입출력 예#1
문제의 예시와 같습니다.
풀이 과정
처음 생각으로는 문제의 모습이 다이내믹 프로그래밍 형식을 이루는 것으로 생각하여서 다이내믹 프로그래밍 방식으로 해결하려고 생각하고 있었지만 다시 읽어보니 완전 탐색을 이용하여 문제를 해결해야 하는 것을 알고 이것에 초점을 맞췄다.
1. 문제에서는 1부터 순서대로 숫자가 1씩 증가하면서 더해주고 이를 더한 값이 주어진 값과 같은지만을 판별을 해주면 된다.
2. 이를 위해서는 for문을 두 개 써야 하는데 한 개의 for문 만을 사용하게 된다면 처음 숫자부터의 반복이 계속되기 때문에 첫 번째 for문의 숫자가 두 번째 for문의 시작 값이 될 수 있게 구성한다.
3. 2번에서 for문을 만들 때는 1부터 시작하도록 하였는데 0이라는 숫자는 더 하였을 때 결과에 영향을 미치지 않기 때문에 생략하였다.
4. 2중 for문의 if 분기에서는 예외처리 부분을 하나 만들어서 결괏값이 타깃 숫자를 넘어갔을 때도 for문을 종료할 수 있게 구성하도록 한다.
코드
def solution(n):
answer = 0
for i in range(1, n + 1):
result = 0
for j in range(i, n + 1):
result += j
if result == n:
answer += 1
break
elif result > n:
break
return answer
'Algorithm' 카테고리의 다른 글
[프로그래머스] 코딩테스트 연습 연습문제 문자열 다루기 기본 (0) | 2022.07.28 |
---|---|
[프로그래머스] 코딩테스트 연습해시 전화번호 목록 (0) | 2022.07.27 |
[프로그래머스] 코딩테스트 연습 연습문제 2016년 (0) | 2022.07.25 |
[프로그래머스] 코딩테스트 연습 스택/큐같은 숫자는 싫어 (0) | 2022.07.24 |
[프로그래머스] 코딩테스트 연습연습문제 가운데 글자 가져오기 (0) | 2022.07.23 |