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

2023. 4. 7. 00:03·PS/프로그래머스
반응형

링크

문제 설명

def solution(sequence: List[int], k: int) -> List[int]:
    ...

주어진 비내림차순 배열 sequence에 대해 합이 k인 부분 배열 중 가장 길이가 짧은 구간을 구해 반환한다.

  • 비내림차순 : 인접한 두 수가 같을 수도 있는 오름차순
sequence k result
[1, 2, 3, 4, 5] 7 [2, 3]
[1, 1, 1, 2, 3, 4, 5] 5 [6, 6]
[2, 2, 2, 2, 2] 6 [0, 2]

제한사항

  • 5 ≤ sequence의 길이 ≤ 1,000,000
    • 1 ≤ sequence의 원소 ≤ 1,000
    • sequence는 비내림차순으로 정렬되어 있습니다.
  • 5 ≤ k ≤ 1,000,000,000
    • k는 항상 sequence의 부분 수열로 만들 수 있는 값입니다.

풀이

부분 배열의 시작과 끝을 나타내는 start와 end를 만들어 구간의 합을 구하고 k와 비교하는 방식으로 문제를 해결했다. 구간의 합이 k보다 작을 경우 end를 오른쪽으로 옮기고, 구간의 합이 k보다 클 경우 start를 오른쪽으로 옮긴다. 이렇게 구한 구간들을 비교해 가장 길이가 짧은 것을 정답으로 반환한다.

제출코드

def solution(sequence: List[int], k: int) -> List[int]:
        answer = []
    start, end = 0, 0
    sum_val = sequence[0]
    min_len = len(sequence)
    while end < len(sequence):
        if sum_val == k:
            if end - start < min_len:
                answer = [start, end]
                min_len = end - start
            sum_val -= sequence[start]
            start += 1
        elif sum_val < k:
            end += 1
            if end < len(sequence):
                sum_val += sequence[end]
        else:
            sum_val -= sequence[start]
            start += 1
    return answer
반응형
저작자표시 비영리 변경금지 (새창열림)
'PS/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 달리기 경주
  • [프로그래머스] 덧칠하기
  • [프로그래머스] 카드뭉치
  • [프로그래머스] 인사고과
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (122) N
      • Spring Framework (7)
        • Spring (3)
        • JPA (2)
        • Spring Security (0)
      • Language (51)
        • Java (11)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (2)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    게임
    NUXT
    게임 개발
    map
    클래스
    파이썬
    자바
    MySQL
    C
    딥러닝
    php
    memcached
    JavaScript
    mscoco
    redis
    select
    Unreal Engine
    Python
    PS
    pytorch
    알고리즘
    Unreal
    CPP
    프로그래머스
    JS
    언리얼엔진4
    웹
    블루프린트
    C++
    FPS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
[프로그래머스] 연속된 부분 수열의 합
상단으로

티스토리툴바