728x90
1. 문제
https://codeup.kr/problem.php?id=2631
보물 찾기
수열 속에 숨어 있는 보물들을 찾아보자. $n$개의 자연수로 이루어진 수열이 있다. 이 수열들 중 연속된 $1$개 이상의 원소들의 합이 정확히 $k$가 되면 이 구간은 보물구간이라고 한다. 주어진 $n$개의 자연수 중에서 보물 구간이 몇 개 있는지 구하는 프로그램을 작성하시오.
codeup.kr
[출처 : 코드업(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 |