문제:
풀이방법:
투 포인터를 사용해서 문제를 해결하도록 한다.
s,e 두 개의 포인터를 사용하며 K보다 작다면 e를 계속해서 증가시키고, k와 같아진 경우 answer를 조건에 맞게 최신화한다. 이 과정이 끝나면 s를 증가시켜 다음 탐색을 진행한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def solution(sequence, k):
answer = []
L = len(sequence)
s, e = 0, 0
parse_sum = sequence[0]
for s in range(L):
while e + 1 < L and parse_sum < k:
e += 1
parse_sum += sequence[e]
if parse_sum == k:
if not answer:
answer = [s, e]
else:
ans_s, ans_e = answer
if e-s < ans_e-ans_s:
answer = [s, e]
parse_sum-=sequence[s]
return answer
|
cs |
문제링크:
https://school.programmers.co.kr/learn/courses/30/lessons/178870
'Algorithm > Python' 카테고리의 다른 글
[BOJ] 19941. 햄버거 분배 (0) | 2023.07.20 |
---|---|
[BOJ] 20920. 영단어 암기는 괴로워 (0) | 2023.07.19 |
[BOJ] 21921. 블로그 (0) | 2023.07.17 |
[Programmers] Lv 2. 롤케이크 자르기 (0) | 2023.07.14 |
[BOJ] 1111. IQ Test (0) | 2023.07.13 |