본문 바로가기
Coding Test/Programmers

[Programmers] [투포인터] Lv 2. 연속된 부분 수열의 합

by song.ift 2023. 7. 31.

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

 

프로그래머스

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

programmers.co.kr

 

#include <string>
#include <vector>

using namespace std;

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> sequence, int k) {
    int s = 0, e = 0;
    int sum = sequence[0]; // 부분 수열의 합
    int subLen = sequence.size() + 1; // 부분 수열의 길이
    pair<int, int> result; // 부분 수열의 시작 인덱스와 마지막 인덱스를 담은 객체

    while (s <= e && e < sequence.size()) {
        if (sum < k) sum += sequence[++e];
        else if (sum == k) {
            if (e - s + 1 < subLen) { // 길이가 더 짧은 수열이면
                subLen = e - s + 1;
                result = { s, e };
            }
            sum -= sequence[s++];
        }
        else sum -= sequence[s++];
    }

    return { result.first, result.second };
}

GitHub : https://github.com/developeSHG/Algorithm-Baekjoon_Programmers/commit/fb44b5f9b72c6935929527425b45f07c0537b2df

 

[unrated] Title: 연속된 부분 수열의 합, Time: 0.01 ms, Memory: 4.13 MB -Baekjo… · developeSHG/Algorithm-Baekjoon_Pro

…onHub

github.com

 

댓글