오늘은 프로그래머스 12번 문제인 "숫자의 표현" Lv.2을 파이썬으로 풀어보도록 하겠습니다.
[프로그래머스] 숫자의 표현 Lv.2 - [파이썬/python]
💻 문제 설명
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 이하의 자연수 입니다.
🌈 힌트
더보기
1. 초기 결과값 설정
result = 1로 설정한 이유는, 어떤 수든지 그 수 자체(자기 자신의 수 예: 15=15)로 표현하는 것은 항상 가능하기 때문 따라서, 결과값을 1로 초기화하면, 반복문에서 다른 방법들을 찾는 동안 기본적인 경우를 놓치지 않게 됩니다.
2. 반복문
n의 절반까지만 반복하기. 이유는, n의 절반을 초과하는 연속된 자연수들의 합은 n을 초과하기 때문에 n의 절반까지만 확인하면 됩니다.
3. 조건문
연속된 자연수들을 더하는 동안 그 합이 n과 같아지면 결과값을 증가시키고 반복문을 종료. 이렇게 하면, 필요 이상으로 반복하는 것을 피할 수 있습니다.
4.결과 반환
모든 가능한 연속된 자연수들의 합을 고려한 후, 결과값을 반환합니다. 이 결과값이 바로 문제에서 요구하는 연속된 자연수들로 주어진 수를 표현하는 방법의 수입니다.
!!!정답 주의!!!
🌟 소스 코드
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
🏳🌈 테스트 결과
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 문자열 곱하기 - Lv.0 (53) | 2023.10.14 |
---|---|
[프로그래머스] 나누어 떨어지는 숫자 배열 - Lv.1 (55) | 2023.10.14 |
[프로그래머스] 코드 처리하기 - Lv.0 (59) | 2023.10.12 |
[프로그래머스] 올바른 괄호 - Lv.2 (48) | 2023.10.08 |
[프로그래머스] 푸드 파이터 대회 - Lv.1 (46) | 2023.10.08 |