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
'coding test - python > Programmers' 카테고리의 다른 글
Programmers / 소수 찾기 / Python 파이썬 (0) | 2022.05.13 |
---|---|
Programmers / 가장 큰 수 / Python 파이썬 (0) | 2022.05.13 |
Programmers / 전화번호 목록 / Python 파이썬 (0) | 2022.05.11 |
Programmers / 올바른 괄호 / Python 파이썬 (0) | 2022.05.05 |
Programmers / N개의 최소공배수 / Python 파이썬 (0) | 2022.05.05 |