https://www.acmicpc.net/problem/2003
2003๋ฒ: ์๋ค์ ํฉ 2
์ฒซ์งธ ์ค์ N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ A[1], A[2], …, A[N]์ด ๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ A[x]๋ 30,000์ ๋์ง ์๋ ์์ฐ์์ด๋ค.
www.acmicpc.net
๋ฌธ์
N๊ฐ์ ์๋ก ๋ ์์ด A[1], A[2], …, A[N] ์ด ์๋ค. ์ด ์์ด์ i๋ฒ์งธ ์๋ถํฐ j๋ฒ์งธ ์๊น์ง์ ํฉ A[i] + A[i+1] + … + A[j-1] + A[j]๊ฐ M์ด ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ A[1], A[2], …, A[N]์ด ๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ A[x]๋ 30,000์ ๋์ง ์๋ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
ํฌํฌ์ธํฐ ์ด์ฉ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> v(n);
for(int i=0; i<n; i++) {
cin >> v[i];
}
int ans=0;
int tmp = v[0];
for(int start=0, end=0; end<n;) {
while(tmp>m && start<end) {
tmp -= v[start];
start++;
}
if(tmp==m) {
ans++;
}
end++;
tmp += v[end];
}
cout << ans;
return 0;
}
๋ถ๋ถํฉ ์ด์ฉ
// ํ์ด : https://whkakrkr.tistory.com
#include <bits/stdc++.h>
using namespace std;
int solution(int n, int m, vector<int>&a) {
vector<int>prefix(n+1, 0);
for(int i=1; i<=n; i++) {
prefix[i] = prefix[i-1] + a[i-1];
}
int ans = 0;
for(int right=n; right>0; right--) {
for(int left=0; left<right; left++) {
if(prefix[right] - prefix[left] == m) {
ans++;
break;
}
}
}
return ans;
}
int main() {
ios_base::sync_with_stdio(false);
cout.tie(NULL);
cin.tie(NULL);
int n,m;
cin >> n >> m;
vector<int>a(n);
for(int i=0; i<n; i++) {
cin >> a[i];
}
cout << solution(n,m,a);
return 0;
}
'๐๏ธ PS (BOJ) > Two Pointer' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 7795๋ฒ: ๋จน์ ๊ฒ์ธ๊ฐ ๋จนํ ๊ฒ์ธ๊ฐ (0) | 2024.08.19 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2467๋ฒ: ์ฉ์ก (0) | 2024.08.18 |
[BOJ S1][C++] ๋ฐฑ์ค 2531๋ฒ: ํ์ ์ด๋ฐฅ (0) | 2022.10.20 |
[BOJ][C++] ๋ฐฑ์ค 10025๋ฒ: ๊ฒ์ผ๋ฅธ ๋ฐฑ๊ณฐ (Silver III) (0) | 2022.10.18 |
๋ฐฑ์ค 1644๋ฒ: ์์์ ์ฐ์ํฉ (0) | 2022.10.18 |