SOO LOG
  • LEVEL 2. 연속 부분 수열 합의 개수
    2025년 01월 11일에 업로드 된 글입니다.

     

    🟪 나의 구현 스케치

    연속된 부분 수열의 합만 구해야 하므로 combinations 함수를 사용하지 않고, 원형 수열이기 때문에 합을 구하는 수열은 elements*2로 정의한다.

    0~len(elements)-1 각 시작점에서 1~len(elemets)+1까지의 조합의 개수만큼 부분수열의 합을 구하도록 하였고 set 함수를 사용하여 중복된 값을 제외할 수 있도록 한다.

     

    🟪 나의 구현 코드

    def solution(elements):
        len_ele = len(elements)
        new_ele = elements*2
        answer = set()
    
        for idx in range(1, len_ele+1):
            for i in range(0, len_ele):
                answer.add(sum(new_ele[i:i+idx]))
    
        return len(answer)

     

    🟪 다른 사람의 구현 코드

    element 길이 안 늘리고 mod를 사용하여 더 빠르게 동작한다고 한다. mod 사용법에 대해 익숙해지면 좋을 것 같다.

    def solution(elements):
        ll = len(elements)
        res = set()
    
        for i in range(ll):
            ssum = elements[i]
            res.add(ssum)
            for j in range(i+1, i+ll):
                ssum += elements[j%ll]
                res.add(ssum)
        return len(res)

    '코딩테스트 > 🕊️프로그래머스' 카테고리의 다른 글

    LEVEL 2. 예상 대진표  (0) 2025.01.13
    LEVEL 1. 신규 아이디 추천  (0) 2022.09.30
    LEVEL 1. 완주하지 못한 선수  (2) 2022.09.30
    LEVEL 1. 최소직사각형  (0) 2022.09.28
    LEVEL 1. [1차] 비밀지도  (0) 2022.09.28
    댓글