본문 바로가기
Algorithms/simulation

2 Problem A : 수열

by OKOK 2019. 11. 7.

정수의 숫자와 연속 부분합의 길이가 주어진다

연속된 숫자의 합이 최대가 되는 값을 출력한다

간단한 방법으로 풀어서(naive) 정답을 도출하고,

더 간단한 방법이 없는지 확인한다

 

- 구간 합 구하기

- 누적 합 구하기

- 범위 설정해서 원하는 값 도출

 

#include <stdio.h>

int N, K, arr[100100], ans = -10000000; // arr 존재

int main()
{
	scanf("%d %d", &N, &K);
	for (int i = 1; i <= N; i++) {
		scanf("%d", &arr[i]); // 입력 받고
		arr[i] += arr[i - 1]; // 누저값을 쌓아감
	}

	// 누적합을 구해두고 범위마다 사용하기
	for (int i = K; i <= N; i++) {
		if (ans < arr[i] - arr[i - K]) ans = arr[i] - arr[i - K]; 
	}
	printf("%d\n", ans);
	return 0;
}

 

'Algorithms > simulation' 카테고리의 다른 글

2 Problem D : 키로거(Keylogger)  (0) 2019.11.07
2 Problem C : 용액  (0) 2019.11.07
1 Problem F : 연속부분합 찾기  (0) 2019.11.07
1 Problem B : 못생긴 수  (0) 2019.11.07
4 Problem C : 숫자 야구2  (0) 2019.11.07

댓글