-
백준 2559번 : 수열 C언어c c++ 언어 공부 2023. 3. 8. 16:23
https://www.acmicpc.net/problem/2559
2559번: 수열
첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031#include <stdio.h>int main(void) {int n = 0, k = 0;scanf("%d %d", &n, &k);int arr[100001] = { 0, };int sum[100001] = { 0, };for (int i = 0; i < n; i++) {scanf("%d", &arr[i]);}int max = -987654321;for (int i = 0; i < k; i++){sum[0] += arr[i];}if (max < sum[0]){max = sum[0];}for (int i = 1; i <= n - k; i++){sum[i] = sum[i - 1] - arr[i - 1] + arr[i + k - 1];if (max < sum[i]){max = sum[i];}}printf("%d", max);}cs for의 2중문으로 해결하려고 하면 시간초과가 발생한다.
그래서 중복되는 부분을 파악하여 앞 숫자는 빼고 뒤 숫자는 더하는 방식으로 새로운 행렬을 만들어 주었다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 1735번 : 분수 합 C언어 (0) 2023.03.09 백준 27866번 : 문자와 문자열 C언어 (0) 2023.03.09 백준 10812번 : 바구니 순서 바꾸기 C언어 (0) 2023.03.08 백준 14502번 : 연구소 C언어 (0) 2023.03.07 백준 2960번 : 에라토스테네스의 체 C언어 (0) 2023.03.07