[Python] 프로그래머스 lv2 - 숫자의 표현
2022. 12. 29. 12:13ㆍ알고리즘/문제풀이
[Python] 프로그래머스 lv2 - 숫자의 표현
코딩테스트 연습 - 숫자의 표현 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
- 주어진 것
- 숫자 n
- 구해야 하는 것
- n이하의 자연수들의 합으로 n을 만들 수 있는 경우의 수
- 선택한 접근방법 - 투 포인터
- 선택 사유 - 숫자들을 더하고 빼면서 n이 가능한 개수 파악에 적합하다고 생각
- 먼저 start, end, s(sum) 지정
- 만약 s < n일 경우
- 합이 n이 되기전까지 end를 덧셈
- end+=1
- 만약 s == n인 경우
- answer +=1
- 만약 s > n 인경우
- s에서 start 빼기
- start +=1
문제 코드
def solution(n):
answer = 0
start, end =1,2
'''
1. 합이 n이 되기전까지 덧셈
2. n이 되면 answer +=1
3. n이 된 순간 다음수를 더해준다
4. 합이 n을 넘어간 순간 가장 앞에서 더해준 숫자(start)를 제거
5. 마지막 end가 n이 된 순간 break
'''
s = 1
while end <= n:
if s == n:
answer +=1
if s<n:
s+=end
end+=1
else :
s-= start
start+=1
return answer+1
마지막 부분에서 return answer + 1 하는 부분의 이유는 반복문의 조건 때문이다. 반복문 종료조건이 end <=n이므로 end는 n까지의 경우로 이때 s는 n보다 크기에 해당 경우가 집계가 되지 않는다. 값을 맞추기 위해 return의 조건이 answer + 1이 되었다.
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스 lv1 - 과일장수 (0) | 2023.01.12 |
---|---|
[Python] 프로그래머스 lv1 - 푸드 파이터 대회 (0) | 2023.01.10 |
[Python] 프로그래머스 lv2 - JadenCase 문자열 만들기 (0) | 2022.12.28 |
[Python] 프로그래머스 lv2 - 게임 맵 최단거리 (0) | 2022.12.27 |
[Python] 프로그래머스 lv2 - 멀리 뛰기 (0) | 2022.12.26 |