https://school.programmers.co.kr/learn/courses/30/lessons/178870
#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 };
}
'Coding Test > Programmers' 카테고리의 다른 글
[Programmers] (2021 KAKAO BLIND RECRUITMENT) Lv 2. 메뉴 리뉴얼 (0) | 2023.08.03 |
---|---|
[Programmers] (2022 KAKAO TECH INTERNSHIP) Lv 2. 두 큐 합 같게 만들기 (0) | 2023.08.01 |
[Programmers] Lv 2. 124 나라의 숫자 (0) | 2023.07.28 |
[Programmers] (월간 코드 챌린지 시즌1) Lv 2. 삼각 달팽이 (0) | 2023.07.28 |
[Programmers] (탐욕법(Greedy)) Lv 2. 큰 수 만들기 (0) | 2023.07.27 |
댓글