[프로그래머스/Python] 연속 부분 수열 합의 개수

Sujin Lee·2022년 10월 22일
0

코딩테스트

목록 보기
147/172
post-thumbnail

문제

프로그래머스 - 연속 부분 수열 합의 개수

해결 과정

나의 풀이

  • while 문을 통해서 elements의 첫번째 원소부터 길이 n개씩 resultadd
    • 원소 + n이 배열의 길이가 넘어갈 때 (원소 4부터 길이 3이라면 4, 7,9)
    • elements[i:]+elements[:i+n-len(elements)]

다른 풀이

  • 처음에 elements를 elements * 2로 정의
    • [7, 9, 1, 1, 4, 7, 9, 1, 1, 4]
  • 이중포문으로 부분 수열의 합을 넣는다.
    • sum(elements[j:j+i+1])

시행착오

  • 리스트를 쓰니까 시간 초과 -> 중복 불가능한 집합 자료형 사용

나의 풀이

def solution(elements):
    result = set()
    n = 0
    while n != len(elements):
        n += 1
        for i in range(len(elements)):
            if i+n > len(elements):
                result.add(sum(elements[i:]+elements[:i+n-len(elements)]))
            else:
                result.add(sum(elements[i:i+n]))
    
    return len(result)

다른 풀이

def solution(elements):
    result = set()
    
    elementLen = len(elements)
    # [7, 9, 1, 1, 4, 7, 9, 1, 1, 4]
    elements = elements * 2
    
    for i in range(elementLen):
        for j in range(elementLen):
            result.add(sum(elements[j:j+i+1]))
    return len(result)
profile
공부한 내용을 기록하는 공간입니다. 📝

0개의 댓글