본문 바로가기
프로그래머스/2단계

(Python/LV2) 연속 부분 수열 합의 개수

by windy7271 2022. 10. 25.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/131701

풀이: 

 

def solution(elements):

elements_set = set(i for i in elements)
elements = 2 * elements
for i in range((len(elements)//2)):
    for j in range(2,(len(elements)//2) + 1):
        elements_set.add(sum(elements[i:i+j]))
print(len(elements_set))

 

내가 생각한 방법은 

elemets = [1,5,3,6,8]

일단 1개씩일경우 를 elements_set 에 넣어주었고

최대 5개 일 경우는 8,1,5,3,6 이기 때문에

 

elemetns를 2배를 해줬다.

 

첫번째 포문에 시작점을 알려주는 i

i가8 일경우 주어지는 elements 안에서 인덱스 값이 4 이기때문에 

바뀐 elements // 2 까지 해준다.

 

두번째 포문은 끝점을 알려주는 j

1개 일때는 컴프리핸션으로 넣어줬으니 제외

2 부터 전체갯수까지

 

elements[시작부분: 끝부분] 을 해주면 된다

 

원형리스트를 쓰면 될거같긴한데 잘 못하겠다

반응형

댓글