๐ ๋ฌธ์
๐ ์์ด๋์ด
๋ถํ ์ ๋ ฌ ๋ฌธ์ ๋ก ์ ํ์ ์ธ ํ์ด๋ก ํ๋ฉด ๋ฉ๋๋ค.
๋งค๊ฐ๋ณ์:
n: ํ๋ง ์์ญ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ๋ณ์์ ๋๋ค.
startX: ํ๋ง ์์ญ์ ์์ X ์ขํ์ ๋๋ค.
startY: ํ๋ง ์์ญ์ ์์ Y ์ขํ์ ๋๋ค.
๋ฐํ๊ฐ:
๋ ๋ฒ์งธ๋ก ํฐ ๊ฐ(ํ๋ง ๊ฐ)์ ๋ฐํํฉ๋๋ค.
๋์:
๋ง์ฝ n์ด 1์ธ ๊ฒฝ์ฐ, ์ฃผ์ด์ง startX์ startY์ ํด๋นํ๋ map์ ์์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
2x2 ํฌ๊ธฐ์ nMap ๋ฐฐ์ด์ ์์ฑํ๊ณ nMap ๋ฐฐ์ด์ ์์๊ฐ์ 4๋ฑ๋ถ์ผ๋ก ๋๋ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํฉ๋๋ค. ๊ณ์ฐํ์ฌ ๊ตฌํฉ๋๋ค.
์ดํ์ 2*2 ๋ฐฐ์ด์ ๋๋ฉฐ ๋ ๋ฒ์งธ๋ก ํฐ ๊ฐ์ ์ฐพ์ ๋ฐํํฉ๋๋ค.
๐ ํ์ด
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static int[][] map;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
map = new int[n][n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < n; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
System.out.println(findPooling(n, 0, 0));
}
private static int findPooling(int n, int startX, int startY) {
if (n == 1) return map[startX][startY];
int[][] nMap = new int[2][2];
//4๋ฑ๋ถ
nMap[0][0] = findPooling(n / 2, startX, +startY);
nMap[0][1] = findPooling(n / 2, startX, startY + n / 2);
nMap[1][0] = findPooling(n / 2, startX + n / 2, startY);
nMap[1][1] = findPooling(n / 2, startX + n / 2, startY + n / 2);
int max = Integer.MIN_VALUE;
int secondeMax = Integer.MIN_VALUE;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
int nowNum = nMap[i][j];
if (max < nowNum) {
secondeMax = max;
max = nowNum;
} else if (secondeMax < nowNum) {
secondeMax = nowNum;
}
}
}
return secondeMax;
}
}
'๋ฐฑ์ค(boj)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA]3109 ๋นต์ง (0) | 2023.07.12 |
---|---|
[JAVA]1802 ์ข ์ด์ ๊ธฐ ๋ถํ ์ ๋ณต (0) | 2023.07.12 |
[JAVA]2798 ๋ธ๋์ญ ์์ ํ์(์กฐํฉ) (0) | 2023.07.04 |
[JAVA]1527 ๊ธ๋ฏผ์์ ๊ฐ์ (์์ ํ์) (0) | 2023.07.04 |
[JAVA]19236 ์ฒญ์๋ ์์ด, ๊ณจ๋2 ์๋ฎฌ๋ ์ด์ (0) | 2023.06.30 |