본문 바로가기
🔅코딩테스트 공부🔅/❗프로그래머스(Lv.2)

[프로그래머스] Level2 연속 부분 수열 합(python)

by 윤무무 2023. 4. 29.

https://school.programmers.co.kr/learn/courses/30/lessons/131701

 

프로그래머스

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

programmers.co.kr

 

1. 내가 작성한 코드
def solution(elements):    
    elements = elements + elements

    result = set()

    for step in range(1,len(elements)//2+1):
        start = 0
        while start < (len(elements)//2):
            result.add(sum(elements[start:start+step]))
            start+=1

    return len(result)

 

1. 수열의 사이클을 돌기 위해 elements 수열 두 개를 붙여준다.

 

2. 이중 반복문을 돌리며 집합에 원소를 넣어준다.

 

나는 while문으로 step과 start를 늘려가며 풀었는데 아래와 같이 이중 for문을 이용하면 더 손쉽게 풀 수 있다.

 

def solution(elements):
    answer = 0
    elements = elements + elements
    s = set()
    for i in range(len(elements)):
        for j in range(len(elements)):
            s.add(sum(elements[i:i+j]))
    return len(s)

 

댓글