ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 수들의 합 2
    백준알고리즘 2019. 8. 26. 00:38
    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    int n, m;
    
    int sum,ans;
    
    int main(){
        scanf("%d %d", &n, &m);
        int *a = new int[n];
        for(int i = 0; i < n;i++){
            scanf("%d", &a[i]);
        }
        int left = 0; int right = 0; sum = a[0]; ans = 0;
        while(left <= right && right < n )
        {
            if(sum < m){
                right +=1;
                sum += a[right];
            }
            else if(sum == m){
                ans+=1;
                right+=1;
                sum += a[right];
            }
            else if(sum > m){
                sum -= a[left];
                left++;
                if(left >right && left < n){
                    right = left;
                    sum = a[left];
                }
            }
        }
        printf("%d\n", ans);
        return 0;
    }

    정말 오랜만에 동적배열 할당해본듯...

    문제는 어렵지않았고, 투포인터 사용해서 풀이했다.

    L, R에 따라 상황이다른데, 조건에따라, LEFT RIGHT가 움직이는것을 통해 풀이

    '백준알고리즘' 카테고리의 다른 글

    불!  (0) 2019.08.26
    가르침  (0) 2019.08.26
    부분합  (0) 2019.08.26
    나이트의 이동  (0) 2019.08.14
    다리만들기  (0) 2019.08.14

    댓글

Designed by Tistory.