본문 바로가기
프로그래밍/CodeUp

CodeUp[Q_2631] : 보물 찾기

by 조원일 2020. 4. 9.
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