저고데

[프로그래머스]숫자의 표현 본문

프로그래머스

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

진철 2023. 2. 1. 22:24
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12924

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제를 간략하게 설명하면 다음과 같다.

숫자 n이 주어질 때, 1부터 n까지 숫자를 연속적으로 나열했을 때 합이 n이 되는 경우의 수를 반환해야 한다.

 

코드를 작성하기 위한 순서는 다음과 같다.

1. 1부터 n까지 숫자를 나열했을 때, 숫자의 절반에서부터 연속적인 합은 모두 n을 초과한다. 따라서 n/2까지의 수로만 만들 수 있다.

2. 숫자를 하나씩 stack에 넣어주고 stack의 합이 n과 같으면 answer+1을 해주고 stack을 초기화해준다.

def solution(n):
    answer = 0
    if n==1: #해당 반복문 코드는 n이 2보다 클 때 가능하므로 1과 2일 때는 따로 분류해준다.
        return 1
    if n==2:
        return 1
    stack=[]
    for i in range(1,int(n/2)+2): #1번
        for j in range(i, int(n/2)+2):
            stack.append(j)
            if sum(stack)>n: #2번 : stack의 합이 n보다 크면 해당 연속된 수는 정답이 아니므로 stack을 비워주고 반복문을 탈출한다.
                stack=[]
                break
            elif sum(stack)==n: #2번
                answer+=1
                stack=[]
                break
    return answer+1 #자기 자신일 때, 즉 숫자 한 개일 때의 경우를 포함하지 않고 있으므로 answer+1일 해준다.
728x90
반응형