본문 바로가기
📝 PS/프로그래머스 (Python)

[프로그래머스] 연속된 부분 수열의 합 (파이썬, Python)

by Safetymo 2023. 4. 28.

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/178870

 

프로그래머스

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

programmers.co.kr

 

첫번째 풀이 (통과)
def solution(sequence, k):
    answer = []
    right = 0
    count = 0
    
    
    for left in range(len(sequence)):
        
        while right < len(sequence) and count < k:
            count += sequence[right]
            right += 1
        
        if count == k:
            if not answer:
                answer = [left, right-1]
            else:
                answer = [left, right-1] if answer[1] - answer[0] > right - 1 - left else answer
        
        count -= sequence[left]
        
        
    
    return answer

투포인터를 사용해서 해결

 

1. 합이 작으면 오른쪽 포인터를 이동

2. 크거나 같으면 다음 왼쪽 포인터를 이동

댓글