안녕하세요, GameLabMaster입니다! 이번 코딩 테스트 대비 포스팅에서는 슬라이딩 윈도우(Sliding Window) 기법을 활용한 문제 풀이에 대해 알아보겠습니다.
문제
길이가 N인 배열 A가 주어집니다. 이 배열에서 연속된 K개의 원소의 합이 최대가 되는 구간의 합을 찾는 프로그램을 작성하세요.
입력
- 배열의 길이 N (1 ≤ N ≤ 10^5)
- 연속된 원소의 개수 K (1 ≤ K ≤ N)
- N개의 정수 A1, A2, ... , AN (|Ai| ≤ 10^4)
출력
- 연속된 K개의 원소의 합이 최대가 되는 구간의 합
풀이
이 문제는 슬라이딩 윈도우 기법을 사용하여 해결할 수 있습니다. 슬라이딩 윈도우 기법은 고정된 길이의 구간(윈도우)을 배열에 슬라이딩 시키며 각 구간에 대한 정보를 구하는 방법입니다.
다음은 C#으로 작성한 연속된 구간의 최대 합을 구하는 코드입니다.
using System;
using System.Linq;
class Program {
static void Main(string[] args) {
int n = int.Parse(Console.ReadLine());
int k = int.Parse(Console.ReadLine());
int[] arr = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
int windowSum = 0;
int maxSum = int.MinValue;
for (int i = 0; i < k; i++) {
windowSum += arr[i];
}
maxSum = windowSum;
for (int i = k; i < n; i++) {
windowSum += arr[i] - arr[i - k];
maxSum = Math.Max(maxSum, windowSum);
}
Console.WriteLine(maxSum);
}
}
이 코드는 먼저 K개의 원소의 합을 구한 후, 슬라이딩 윈도우 기법을 사용하여 각 구간의 합을 구하고 최대 합을 찾습니다.
이렇게 슬라이딩 윈도우 기법을 활용하여 문제를 해결할 수 있습니다. 이 기법을 익히면 다양한 구간 관련 문제를 쉽게 해결할 수 있으므로, 코딩 테스트 대비에 도움이 될 것입니다. 다음 포스팅에서는 다른 슬라이딩 윈도우 문제에 대해 알아보겠습니다. 이 기법을 활용한 문제들은 시간 복잡도를 줄여 효율적인 코드를 작성할 수 있게 도와주므로 꼭 기억해두시길 바랍니다. 코딩 테스트 준비에 화이팅하세요
'Coding Test' 카테고리의 다른 글
코딩 테스트 대비: KMP 알고리즘을 활용한 문자열 검색 (C#) (0) | 2023.05.08 |
---|---|
코딩 테스트 대비: 플로이드-와샬 알고리즘 - 모든 정점 쌍의 최단 경로 찾기 (C#) (0) | 2023.05.07 |
코딩 테스트 대비: 동적 프로그래밍 - 0-1 Knapsack Problem 풀이 (0) | 2023.04.30 |
코딩 테스트 대비: '네트워크 연결' 문제 풀이 - Kruskal 알고리즘 적용 (C#) (1) | 2023.04.28 |
코딩 테스트 대비: 그래프 이론 기초 이해 및 적용 (C#) (0) | 2023.04.28 |