728x90
1. 문제
https://codeup.kr/problem.php?id=2631
[출처 : 코드업(https://codeup.kr/)]
이번에는 주어진 배열중 연속된 n개의 합이 k가 되는 구간의 수를 구하는 문제입니다.
2. 풀이방법
STEP 1. arr[i]부터 합이 k인지 확인 (k보다 크면 i++)
STEP 2.
STEP 3.
STEP 4.
STEP 5.
3. 해답
#include <stdio.h>
int main() {
int n, k, tmp, c = 0;
int arr[100000];
scanf("%d %d", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < n; i++) {
// k보다 크면 무시하기
if (arr[i] > k) continue;
tmp = arr[i];
if (tmp == k) {
c++;
continue;
}
else {
for (int j = i + 1; j < n; j++) {
tmp += arr[j];
// 합이 k보다 크면
if (tmp > k) break;
else if (tmp == k) {
// 합이 k와 같으면
c++;
break;
}
}
}
}
printf("%d", c);
return 0;
}
'프로그래밍 > CodeUp' 카테고리의 다른 글
CodeUp[Q_2635] : 약수의 합 (Large) (0) | 2020.04.11 |
---|---|
CodeUp[Q_2633] : Lower Bound (0) | 2020.04.10 |
CodeUp[Q_2629] : 광역시 (0) | 2020.04.08 |
CodeUp[Q_2628] : 케익 자르기 (0) | 2020.04.07 |
CodeUp[Q_2610] : 그림판 채우기 (0) | 2020.04.05 |