ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
    반응형

    댓글

Designed by Tistory.