๋ฌธ์ :
๋ถ์ :
ํฌ ํฌ์ธํฐ๋ 1์ฐจ์ ๋ฐฐ์ด์ ๋ํด ํฌ์ธํฐ๋ฅผ ์ ๋๋จ์ ๋๊ณ ๊ฐ์ ์ฐพ๋ ๋ฐฉ์์ ๋งํ๋ค.
์กฐ๊ฑด(m)์ ํด๋น ๋๋ ๊ฐ์ ์ฐพ์ผ๋ฉด cnt๋ฅผ ์ฆ๊ฐ
m ๋ณด๋ค ์์ ๊ฐ์ด๋ฉด end ์ธ๋ฑ์ค ์์น์ ๊ฐ์ sum์ ์ ์ฅํ๊ณ end ํ๋ ์ฆ๊ฐ
m ๋ณด๋ค ํฐ ๊ฐ์ด๋ฉด start ์ธ๋ฑ์ค์ ๊ฐ์ ๋นผ๊ณ start๋ฅผ ํ๋ ์ฆ๊ฐ์ํด
c++ ์ฝ๋ :
//
// 2003_sum2.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/02/26.
//
#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
int two_pointer(int N, int arr[], int M){
int cnt = 0;
int start = 0, end = 0;
int sum = 0;
while(true){
if(sum >= M){
sum = sum - arr[start++]; // ๊ฐ์ ๋นผ์ฃผ๊ณ start ์ธ๋ฑ์ค ๋ค๋ก ๊ฐ
}else if(end == N){ // end ๊ฐ ์ธ๋ฑ์ค ๋ฒ์ ๋ฒ์ด๋ฌ์ ๊ฒฝ์ฐ
break;
}else{ // end ํ์ฌ ์์น๊ฐ ์ ์ฅ ํ end ๋ค๋ก ์ด๋
sum = sum + arr[end++];
}
if(sum == M){
cnt++;
}
}
return cnt;
}
int main(){
int N, M;
cin >> N >> M;
int arr[N];
for(int i =0; i < N; i++){
cin >> arr[i];
}
int cnt = two_pointer(N, arr, M);
cout << cnt << endl;
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 10974 ๋ชจ๋ ์์ด ๋ฐฑํธ๋ํน (0) | 2021.02.27 |
---|---|
[๋ฐฑ์ค] 2617 ๊ตฌ์ฌ ์ฐพ๊ธฐ DFS (0) | 2021.02.26 |
[๋ฐฑ์ค] 2667 ๋จ์ง ๋ฒํธ ๋ถ์ด๊ธฐ BFS (0) | 2021.02.19 |
[๋ฐฑ์ค] 18870 ์ขํ ์์ถ (0) | 2021.02.19 |
[๋ฐฑ์ค] 2660 ํ์ฅ ๋ฝ๊ธฐ Floyd Warshall (0) | 2021.02.18 |
๋๊ธ