[프로그래머스] Lv2 - 숫자의 표현

김멉덥·2023년 8월 30일
0

알고리즘 공부

목록 보기
101/171
post-thumbnail
post-custom-banner

문제

프로그래머스 연습문제


코드 구현

def solution(n):
    answer = 1      # 자기자신이 하나의 정답이 되므로 우선 answer는 1로 시작

    for i in range(1, (n // 2) + 1):    # 자신보다 절반 이상의 수부터는 연속적으로 더했을 때 자기자신이 나올수 없기 때문에 (n//2)+1 까지만 돌리기
        result = 0
        for j in range(i, (n // 2) + 2):    # 절반 그 다음까지 더해지는 경우를 위해 (n//2)+2 까지 돌리기
            result += j
            if (result > n):    # 더해서 만약 자기자신보다 커지면 정답 X
                break
            if (result == n):   # 자기자신이랑 같은 값이 나오면 answer + 1, 다음 수를 따지기 위해 break
                answer += 1
                break

    return answer

풀이

  • 시간초과를 막기 위해서는 조건설정을 자기 자신의 절반값 까지만 돌려야 한다.
    • 애초에 자신보다 절반 이상의 수부터는 연속적으로 더했을 때 자기자신이 나올수 없기 때문 !

profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

0개의 댓글