https://school.programmers.co.kr/learn/courses/30/lessons/178870
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
프로그래머스 LV2 문제

정렬된 배열에서 부분 배열이 제시한 K와 같을 때 해당 인덱스를 반환. 단, 최소 개수의 부분 배열이여야 함.
def solution(sequence, k):
answer = []
left = 0 ; right = 0 ; index_num = len(sequeㄴㄴnce) # 최소 배열 체크용
cnt = sequence[left]
# sequence 는 정렬된 배열
while 1 :
#print ([left, right])
if cnt == k :
# 최소 배열인지 체크
if index_num > right - left :
index_num = right - left
answer = [left, right]
right += 1
if right == len(sequence) : break
cnt += sequence[right]
elif cnt > k :
cnt -= sequence[left]
left += 1
elif cnt < k :
right += 1
if right == len(sequence) : break
cnt += sequence[right]
return answer
아래 표처럼, 부분 배열의 합이 입력된 K보다 크거나 같을 경우에는 R ++
K보다 작을 때는 L--
이때 부분 배열의 합을 갱신해줘야 하기에,
L-- 이전에 합에서 [Left] 값을 빼주고, R++ 한 후에 합에서 [Right] 값을 더해주면서 전진하면됨

'자기개발👨💻 > 코딩 알고리즘' 카테고리의 다른 글
| [Python] 스킬트리 - 프로그래머스 Lv2 (1) | 2023.12.11 |
|---|---|
| [Python] 안전지대 - dfs, bfs로 풀기 (0) | 2023.12.08 |
| [Python] 우리는 하나 - bfs, 순열, 조합 (작성중) (0) | 2023.12.08 |
| 파이썬 알면 좋은 내용! (3) | 2023.12.07 |
| DFS, BFS (0) | 2023.12.06 |
| [C++] 순열부터 조합까지 직접 구현해보기 (작성중) (0) | 2023.12.05 |