본문 바로가기
코딩 테스트/프로그래머스

숫자의 표현

by ornni 2024. 7. 8.
728x90
반응형

첫번째 코드

 

숫자를 연속적으로 더하는 것이므로 반 이상이 되는 경우 어차피 더해도 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

 

통과


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/12924.%E2%80%85%EC%88%AB%EC%9E%90%EC%9D%98%E2%80%85%ED%91%9C%ED%98%84

 

programmers/프로그래머스/2/12924. 숫자의 표현 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

정수 제곱근 판별  (0) 2024.07.26
삼총사  (0) 2024.07.22
소수 찾기  (0) 2024.07.05
서울에서 김서방 찾기  (2) 2024.07.01
수박수박수박수박수박수?  (0) 2024.06.30