먼지 쌓인 키보드
[백준 2003번][투 포인터] 수들의 합2 본문
반응형
백준 2003번 수들의 합
https://www.acmicpc.net/problem/2003
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
|
#include <iostream>
using namespace std;
int n, m, cnt;
int a[10001];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>n;
cin>>m;
for (int i = 1; i <= n; i++){
cin>>a[i];
}
int j = 2, sum = a[1];
// (a[1]+a[2]+a[3])>=m 라면 a[1]+a[2]+a[3]+a[4]+a[5]-a[1]
for (int i = 1; i <= n;i++){
while (sum<m){//i~j번째까지의 합 합이 m보다 크거나 같을때까지
if (j > n) break;//j가 n의 범위를 넘어갔을때
sum += a[j++];//j번째까지의 합
}
if (sum == m) cnt++;//합이 m과 같을때 카운트를 증가
sum -= a[i];//맨앞의 a[i]번째를 빼주어, sum은 a[i+1]부터의 합이 된다.
// (a[1]+a[2]+a[3])>=m 라면 a[1]+a[2]+a[3]+a[4]-a[1]
//1번부터 sum에 합하고 m보다 클때는 첫번째 더한것을 뺀다.
}
printf("%d\n", cnt);
}
|
cs |
반응형
'공부 관련 > Programming' 카테고리의 다른 글
C언어 기초 내용 정리 (2/2) (0) | 2019.12.04 |
---|---|
C언어 기초 내용 정리 (1/2) (0) | 2019.12.04 |
알고리즘을 시작하는 사람을 위한 [백준 기초 문제 링크] (0) | 2019.12.04 |
[백준 2748번][피보나치 수열] 피보나치 수2 (0) | 2019.02.26 |
[백준 2805번][이분탐색] 나무 자르기 (0) | 2019.02.26 |
Comments