https://www.acmicpc.net/problem/1999
ํ์ด
N์ ํฌ๊ธฐ ์ ํ์ด 250 ๋ฐ์ ์๋ผ์ O(N³ + KN)๊น์ง ๊ฐ๋ฅ.
max[r][c] =A[r][c], A[r][c + 1], A[r][c + 2], …, A[r][c + B - 1] ์ค ๊ฐ์ฅ ํฐ ๊ฐ
min[r][c] =A[r][c], A[r][c + 1], A[r][c + 2], …, A[r][c + B - 1] ์ค ๊ฐ์ฅ ์์ ๊ฐ
์์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ด์ ์ ํ์ฉํด์ ๊ฐ ์ง๋ฌธ๋ง๋ค O(N²) ๊ฑธ๋ฆด ๋ถ๋ถํ๋ ฌ ํ์์ O(N)๋ก ์ค์ด๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง.
์ฝ๋
import java.io.*;
import java.util.*;
public class Main {
public static final int MIN = -1;
public static final int MAX = 251;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int[][] A = new int[N + 1][N + 1];
for (int r = 1; r <= N; r++) {
st = new StringTokenizer(br.readLine());
for (int c = 1; c <= N; c++) {
A[r][c] = Integer.parseInt(st.nextToken());
}
}
int[][] max = new int[N + 1][N + 1];
int[][] min = new int[N + 1][N + 1];
for (int r = 1; r <= N; r++) {
for (int c = 1; c <= N - B + 1; c++) {
int tempMax = MIN;
int tempMin = MAX;
for (int i = 0; i < B; i++) {
if (A[r][c + i] >= tempMax) {
tempMax = A[r][c + i];
}
if (A[r][c + i] <= tempMin) {
tempMin = A[r][c + i];
}
}
max[r][c] = tempMax;
min[r][c] = tempMin;
}
}
StringBuilder sb = new StringBuilder();
while (K-- > 0) {
st = new StringTokenizer(br.readLine());
int r = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int maxVal = MIN;
int minVal = MAX;
for (int i = 0; i < B; i++) {
maxVal = Math.max(maxVal, max[r + i][c]);
minVal = Math.min(minVal, min[r + i][c]);
}
sb.append(maxVal - minVal).append('\n');
}
System.out.println(sb);
br.close();
}
}
ํ๊ธฐ
์ฒ์์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ด์ ๊ณผ์ ์์ ํฌ ํฌ์ธํฐ ์จ์ ์ด ์๊ฐ๋ณต์ก๋๋ฅผ O(N²)๊น์ง ์ค์ด๋ ๊ฒ ๊ฐ๋ฅํ๊ฒ ๋ค ์ถ์๋๋ฐ, N์ด 250 ์ดํ์ธ ๊ฑธ ๋ณด๊ณ ๊ทธ๋ฅ ํธํ๊ฒ ๋ฐ๋ณต๋ฌธ ๋๋ ธ๋ค. ๋ค๋ฅธ ์ฌ๋๋ค ํ์ด ๋ณด๋ O(Nโด)๊น์ง ํต๊ณผ ๋๋ค๋ ๊ฒ ๊ฐ๊ณ (์ด๊ฑด ๋ฌธ์ ์ ์๋๊ฐ ์๋ ๊ฒ ๊ฐ๊ธด ํ๋ฐ..), ๊ทธ๋งํผ ํ์ด๊ฐ ๋ค์ํ ๋ฌธ์ ์๋ค.
'Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ฐฑ์ค 2252 - ์ค ์ธ์ฐ๊ธฐ (0) | 2024.03.14 |
---|---|
[Java] ๋ฐฑ์ค 1724 - ๊ทธ๋ฆผํ (0) | 2024.03.13 |
[Java] ๋ฐฑ์ค 16946 - ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ 4 (0) | 2024.02.29 |
[Java] ๋ฐฑ์ค 31091 - ๊ฑฐ์ง๋ง (0) | 2024.02.23 |
[Java] ๋ฐฑ์ค 31423 - ์ ์ด ํตํํฉ ๊ณํ (0) | 2024.02.21 |