반응형
다시 푸는 문제 !
마찬가지로 투포인터를 이용해 풀이할 수 있었다.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int cmp(pair<int, int> a, pair<int, int> b) {
int aLen = a.second - a.first;
int bLen = b.second - b.first;
if(bLen == aLen)
return a.first < b.first;
else
return aLen < bLen;
}
vector<int> solution(vector<int> sequence, int k) {
vector<pair<int, int>> answer;
int result = 0;
int j = 0;
for(int i = 0; i < sequence.size(); i++) {
while(result < k && j < sequence.size()) {
result += sequence[j];
j++;
}
if(result == k) {
answer.push_back({i, j - 1});
}
result -= sequence[i];
}
sort(answer.begin(), answer.end(), cmp);
return {answer[0].first, answer[0].second};
}
반응형
'[프로그래머스]' 카테고리의 다른 글
[프로그래머스] 미로 탈출 C++ (0) | 2024.03.22 |
---|---|
[프로그래머스] 등산코스 정하기 (0) | 2024.03.22 |
[프로그래머스] 연속 부분 수열 합의 개수 (0) | 2024.03.19 |
프로그래머스 거리두기 확인하기 (0) | 2023.10.09 |
프로그래머스 후보키 C++ (1) | 2023.10.05 |