본문 바로가기
프로그래머스/Python

[프로그래머스] 숫자의 표현 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 6.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 1부터 입력받은 수까지 자연수를 원소로 하는 배열을 생성한다. li = list(range(1, n + 1))
  2. 슬라이싱을 활용하여 연속된 자연수를 추출한다. 슬라이싱에 사용할 시작 위치와 종료 위치의 값을 반복문을 활용해 지정해 준다.
  3. 시작 위치는 처음부터 끝까지이고 for i in range(n + 1)
  4. 종료 위치는 시작 위치 다음부터 배열의 끝까지의 범위로 지정한다. for j in range(i + 1, n + 1)
  5. 만약 지정한 슬라이싱의 합이 입력받은 수이면 if (sum(li[i : j]) == n)
  6. 연속된 자연수들의 합이므로 경우의 수에 1을 더한다. answer += 1
  7. 만약 지정한 슬라이싱의 합이 입력받은 수보다 크면 반복을 종료한다. if (sum(li[i : j]) > n): break
반응형

3. 소스코드

def solution(n):
    answer = 0
    
    li = list(range(1, n + 1))
    
    for i in range(n + 1):
        for j in range(i + 1, n + 1):
            if (sum(li[i : j]) == n):
                answer += 1
            if (sum(li[i : j]) > n):
                break
    
    return answer
728x90
반응형