BOJ 문제풀이

백준 2003번 c++ 풀이

koreasunoo 2021. 7. 29. 23:59
SMALL

안녕하세요 오늘은 구간합 문제를 풀어보겠습니다.

 

해결전략:

우선은 '투포인터' 알고리즘을 이용할 겁니다

화살표는 왼쪽부터 l, r 화살표입니다 밑에 코드와 그림을 대조해 보시길 바랍니다.

 

코드분류: 투포인터

 

코드:

#include <bits/stdc++.h>
#include <vector>

using namespace std;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int M, N;
	cin>> M>>N;
	vector<int> v(M);
	for(int i= 0; i< M; i++){
	
		cin>> v.at(i);
	}
	int l = 0, r = 0,sum = 0, count = 0;
	while(1){
		if(sum >= N){
			sum-=v.at(l);
			l++;
		}
		else if(r>=M){
			break;
		}
		else{
			sum += v.at(r);
			r++;
		}
		if(sum==N) count++;
		
	}
	cout<<count;
}

 

LIST

'BOJ 문제풀이' 카테고리의 다른 글

백준 10870번 c++ 풀이  (0) 2021.07.30
백준 9095번 c++ 풀이  (0) 2021.07.30
백준 1463 c++ 풀이  (1) 2021.07.28
백준 3273 c++ 풀이  (0) 2021.07.26
백준 1074번 c++ 풀이  (0) 2021.07.22