첫번째 코드
숫자를 연속적으로 더하는 것이므로 반 이상이 되는 경우 어차피 더해도 n보다 큰 값이 나온다.
ex) 7 + ? > 12
그렇기 때문에 n의 반까지만 진행하며, 총 합이 큰 경우 작은 값부터 제거하는 방식으로 코드를 작성한다.
def solution(n):
answer = 1
list = []
for i in range(1, (n//2)+2):
list.append(i)
if sum(list) > n:
while sum(list) > n:
list.pop(0)
if sum(list) == n:
answer += 1
return answer
15, 18에서 오답이 나타난다.
두번째 코드
n=1인 경우 answer에 이미 1이 있는 것이므로 2가 되어 오답이 된다. 이를 수정한다.
def solution(n):
answer = 1
list = []
if n != 1:
for i in range(1, (n//2)+2):
list.append(i)
if sum(list) > n:
while sum(list) > n:
list.pop(0)
if sum(list) == n:
answer += 1
return answer
여전히 18에서 오답이 나타난다.
세번째 코드
n=2일 때까지 두번째 코드와 같은 문제가 발생한다.
n=3이상인 경우에만 아래 함수가 정상적으로 작동한다.
def solution(n):
answer = 1
list = []
if n == 1:
return answer
elif n == 2:
return answer
else:
for i in range(1, (n//2)+2):
list.append(i)
if sum(list) > n:
while sum(list) > n:
list.pop(0)
if sum(list) == n:
answer += 1
return answer
통과
링크
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
정수 제곱근 판별 (0) | 2024.07.26 |
---|---|
삼총사 (0) | 2024.07.22 |
소수 찾기 (0) | 2024.07.05 |
서울에서 김서방 찾기 (2) | 2024.07.01 |
수박수박수박수박수박수? (0) | 2024.06.30 |