728x90
SMALL
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(sequence, k):
left = right = 0
current_sum = 0
min_length = float('inf')
result = []
while right < len(sequence):
current_sum += sequence[right]
while current_sum > k and left <= right:
current_sum -= sequence[left]
left += 1
if current_sum == k:
if right - left + 1 < min_length:
min_length = right - left + 1
result = [left, right]
right += 1
return result
- 투 포인터를 활용한 슬라이딩 윈도우 알고리즘으로 문제를 풀어보았습니다.
- 처음에는 브루트포스로 연속 합 방식도 사용해보고, dp를 이용해서도 풀어보았는데 확실히 배열 내 범위가 지정되거나 점차 늘려나가야하는 문제에 있어서는 슬라이딩 윈도우 방식이 적합해보입니다.
- 요즘 들어 투 포인터 방식을 사용해야 하는 문제들이 다수 보이는데, 잘 연습해두면 좋을 것 같습니다. :)
- 슬라이딩 윈도우 관련해서도 추후에 관련 글 작성해보도록 하겠습니다!
728x90
LIST
'알고리즘 문제 > 프로그래머스 (Level 2)' 카테고리의 다른 글
📗 숫자 카드 나누기 (0) | 2024.08.05 |
---|---|
📗 메뉴 리뉴얼 (0) | 2024.07.26 |
📗 마법의 엘리베이터 (0) | 2024.07.23 |
📗 124 나라의 숫자 (0) | 2024.07.17 |
📗 큰 수 만들기 (0) | 2024.07.11 |