알고리즘/프로그래머스

[C++] 프로그래머스 연속된 부분 수열의 합

이영재의오른발 2023. 4. 13. 14:24
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <string>
#include <vector>
#include <iostream>
using namespace std;
 
vector<int> solution(vector<int> sequence, int k) {
    vector<int> answer;
    int left = 0;
    int right = 0;
    int sum = sequence[0];
    int minus = 2100000000;
    
    while(1) {
        if(sum == k) {
            if(right - left < minus) {
                answer.clear();
                answer.push_back(left); 
                answer.push_back(right);
                minus = right - left;
            }
            sum = sum - sequence[left];
            left += 1;
            continue;
        }
 
        if(sum < k) {
            if(right == sequence.size()-1) { break; }                                                                        
            right += 1;
            sum = sum + sequence[right];
        }
        else if(sum > k) {
            sum = sum - sequence[left];
            left += 1;
        }
    }
    
    
    return answer;
}
cs

 

 

투포인터를 사용하면 쉽게 풀 수 있는 문제

728x90
반응형