[์ฌ๋ผ์ด๋ฉ ์๋์ฐ] 3. ์ต๋ ๋งค์ถ
์ค๋ช
ํ์์ ์๋น ๋ ์ ๊ณผ์ ์ ์ด์ํฉ๋๋ค. ํ์ ์๋น ๋ ํ์์๊ฒ N์ผ ๋์์ ๋งค์ถ๊ธฐ๋ก์ ์ฃผ๊ณ ์ฐ์๋ K์ผ ๋์์ ์ต๋ ๋งค์ถ์ก์ด ์ผ๋ง์ธ์ง ๊ตฌํ๋ผ๊ณ ํ์ต๋๋ค.
๋ง์ฝ N=10์ด๊ณ 10์ผ ๊ฐ์ ๋งค์ถ๊ธฐ๋ก์ด ์๋์ ๊ฐ์ต๋๋ค. ์ด๋ K=3์ด๋ฉด
12 1511 20 2510 20 19 13 15
์ฐ์๋ 3์ผ๊ฐ์ ์ต๋ ๋งค์ถ์ก์ 11+20+25=56๋ง์์ ๋๋ค.
์ฌ๋ฌ๋ถ์ด ํ์๋ฅผ ๋์์ฃผ์ธ์.
์ ๋ ฅ
์ฒซ ์ค์ N(5<=N<=100,000)๊ณผ K(2<=K<=N)๊ฐ ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค์ N๊ฐ์ ์ซ์์ด์ด ์ฃผ์ด์ง๋๋ค. ๊ฐ ์ซ์๋ 500์ดํ์ ์์ด ์๋ ์ ์์ ๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ์ต๋ ๋งค์ถ์ก์ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
10 3
12 15 11 20 25 10 20 19 13 15
์์ ์ถ๋ ฅ 1
56
<<ํ์ด>>
-๋์ ํ์ด-
์๊ฐ ๋ณต์ก๋ : O(N^2)
sliding window๋ ๋ฌด์จ ๋ง์ผ๊น ใ ใ ์ผ๋จ ๋ด๊ฐ ๋ ์ค๋ฅด๋ ๋ฐฉ์๋๋ก ํ์๋ค. ์ฒ์์๋ O(N) ๋ฐฉ์์ ์ฐพ์์ ์งํํ๊ณ ์์๋๋ฐ ์ค๊ฐ์ ๋งํ๊ณ ๋ค์ ์์ ํ๋ ๊ณผ์ ์์ ์ ๊ณฑ์ด ๋์ด ๋ฒ๋ ธ๋ค ใ ใ .. ๊ทธ๋ ๊ฒ ์ ๋ต์ ๋ง์์ง๋ผ๋ ์๊ฐ ์ด๊ณผ๋ก ๊ฒฐ๊ณผ๊ฐ ๋์๋ค ใ ใ
import java.util.*;
class Main {
public int solution(int N, int K, int[] arr) {
int[] answer = new int[N - K + 1];
int index = 0;
int num = 0;
for(int i = 0; i < N - K + 1; i++) {
num = 0;
for(int j = i; j < i + K; j++) {
num += arr[j];
}
answer[index++] = num;
}
int max = 0;
for(int i = 0; i < N - K + 1; i++) {
if(answer[i] > max) max = answer[i];
}
return max;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int K = in.nextInt();
int[] arr = new int[N];
for(int i = 0; i < N; i++) {
arr[i] = in.nextInt();
}
System.out.print(T.solution(N, K, arr));
}
}
-๊ฐ์ฌ๋ ํ์ด-
import java.util.*;
class Main {
public int solution(int N, int K, int[] arr) {
int answer = 0, sum = 0;
for(int i = 0; i < K; i++) sum += arr[i];
answer = sum;
for(int j = K; j < N; j++) {
sum = sum + arr[j] - arr[j - K];
answer = Math.max(answer, sum);
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int K = in.nextInt();
int[] arr = new int[N];
for(int i = 0; i < N; i++) {
arr[i] = in.nextInt();
}
System.out.print(T.solution(N, K, arr));
}
}
๋๋ ~ ใ ใ ใ ใ ๋ฌด๋ฆ์ ํ ์น๋ค ใ ใ
์๊ฐ๋ง ์ถฉ๋ถํ๋ฉด ๋๋ ์ด๋ ๊ฒ ์๊ฐํ ์ ์์์๊น? ์๋๋ฉด ๋๋ฌด ์์๊ฒฝ์ ๋ผ๊ณ ์๋ค๋ณด๋ ์ ๋ณด์๋ ๊ฒ์ผ๊น?
๋ฐฉ์์ ์๊ฐํด๋ณผ ์ ์์ ์ ๋๋ก ๊ฐ๋จํ ๋ฐฉ์์ด๋ค.
๋ง ๊ทธ๋๋ก ์ฐฝ๋ฌธ์ ์ฎ๊ฒจ ๊ฐ๋ฉด์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ์ฒ์์ ์ฐฝ๋ฌธ ํ์ ์ ํด๋๊ณ ๊ทธ ๊ฐ์ ๊ตฌํ ๋ค, ๋ค์ ๊ฐ์ ์นธ ๋ค์ ํ๋๋ฅผ ๋ํด์ฃผ๊ณ ์์ ํ๋๋ฅผ ๋นผ์ฃผ๋ฉด์ ์ฐฝ๋ฌธ์ ์ฎ๊ธฐ๋ ํํ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ด sliding window ๋ฐฉ์์ด๋ค.
ํํ ใ ใ ์ด ๋ฐฉ์์ ์ด์ค for๋ฌธ ํํ๋ก ๊ฐ์ ์ ๊ณฑ ํํ์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋์ฌ ์๋ ์๋ ๊ฒ์ O(N)์ผ๋ก ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์๋ ๋ฐฉ์์ด๋ค.
์ค๋๋ ํ ์ ๋ฐฐ์ ๋ค ใ ใ
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํฌ ํฌ์ธํฐ] 5. ์ฐ์๋ ์์ฐ์์ ํฉ (0) | 2023.12.26 |
---|---|
[๋ณตํฉ๋ฌธ์ ] 4. ์ฐ์ ๋ถ๋ถ์์ด (0) | 2023.12.24 |
[ํฌ ํฌ์ธํฐ] 2. ๊ณตํต์์ ๊ตฌํ๊ธฐ (1) | 2023.12.23 |
[ํฌ ํฌ์ธํฐ] 1. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ (1) | 2023.12.23 |
[๋ฐฐ์ด] 12. ๋ฉํ ๋ง (1) | 2023.12.22 |
๋๊ธ