BOJ - 수들의 합2(2003)
08 Jan 2021 | BOJ 백준 알고리즘 두 포인터포인터 두 개를 사용해서 해결할 수 있는 알고리즘입니다. 간단해 보이지만 끝나는 조건을 잘못 설정하면 무한으로 loop 가 될 가능성이 있어서 조심해야 합니다.
풀이 코드
#include <stdio.h>
int A[10001];
int main() {
int N, M;
scanf("%d %d", &N, &M);
A[0] = 0;
for (int i = 1; i <= N; i++) {
scanf("%d",&A[i]);
}
int front, rear, sum, ans;
front = sum = ans = 0;
rear = 0;
while(front <= N && rear <= N) {
if (sum == M) {
ans++;
sum += A[++front];
sum -= A[rear++];
continue;
}
if (sum < M) {
sum += A[++front];
continue;
}
if (sum > M) {
sum -= A[rear++];
continue;
}
}
printf("%d", ans);
return 0;
}
Comments