문제:

풀이방법:

투 포인터를 사용해서 문제를 해결하도록 한다.

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 = 00
    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-< ans_e-ans_s:
                    answer = [s, e]
        parse_sum-=sequence[s]
    return answer
cs

문제링크:

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

 

프로그래머스

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

programmers.co.kr

 

'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

+ Recent posts