View
[๋ฐฑ์ค] 2630: ์์ข ์ด ๋ง๋ค๊ธฐ(๋ถํ ์ ๋ณต)
์ฑ ์ฝ๋ ๊ฐ์ 2022. 10. 3. 21:23๋ฐ์ํ
https://www.acmicpc.net/problem/2630
๐ก ๋ฌธ์ ์ ๊ทผ ๋ฐฉ์
๋ฒ์๋ณ๋ก ๋ถํ ํด์ ์ฌ๊ท ๋๋ฆฌ๋ ํํ -> ๋ถํ ์ ๋ณต์ผ๋ก ํ์ด์ผํ๋ ๋ํ์ ์ธ ๋ฌธ์
- ๊ธฐ์ ์กฐ๊ฑด 1: ์์ข ์ด๊ฐ ๋์ด์ ๋๋ ์ง์ง ์์ ๋ return
-๊ธฐ์ ์กฐ๊ฑด2: ๋ชจ๋ ์นธ์ ์์ข ์ด ์์ด ๊ฐ์ ๋ return
2. ๊ธฐ์ ์กฐ๊ฑด 2๋ฅผ ํ์ ํ๊ธฐ ์ํด์๋ booleanํ์ ์ ํ์ธ ์ ์ฐจํ์ -> isSame() ํจ์
3. 1์ฌ๋ถ๋ฉด, 2์ฌ๋ถ๋ฉด, 3์ฌ๋ถ๋ฉด, 4์ฌ๋ถ๋ฉด์ผ๋ก ๋๋ ์ ์ฌ๊ท๋๋ฆผ
// ๊ฐ์ ์๊น์ด ์๋๋ผ๋ฉด ์๋ฅธ๋ค
search(y, x, size / 2);
search(y + size / 2, x, size / 2);
search(y, x + size / 2, size / 2);
search(y + size / 2, x + size / 2, size / 2);
๐ก ์ ์ฒด ์ฝ๋
package ๋ฐฑ์ค;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_2630 {
static int[][] map;
static int N;
static int zero, one;
static int[] dx = { -1, 1, 0, 0 };
static int[] dy = { 0, 0, -1, 1 };
static boolean visit[][];
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
map = new int[N][N];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
} // ์
๋ ฅ ๋
zero = 0;
one = 0;
search(0, 0, N);
System.out.println(zero);
System.out.println(one);
}
private static void search(int y, int x, int size) {
// 1. ์ข
๋ฃ์กฐ๊ฑด 1-> ์ฌ์ด์ฆ๊ฐ 1์ผ ๋ ์๋ฅผ ์ ์์
if (size == 1) {
// 1์ผ๋-ํ๋์
if (map[y][x] == 1)
one++;
else {
zero++;
}
return;
}
// 2. ์ข
๋ฃ์กฐ๊ฑด: ์๋ผ์ง ์ข
์ด๊ฐ ๋ชจ๋ ํ๊ฐ์ง ์๊น๋ก ์น ํด์ ธ์์ ๋
if (isSame(y, x, map[y][x], size)) {
if (map[y][x] == 1)
one++;
else {
zero++;
}
return;
}
// ๊ฐ์ ์๊น์ด ์๋๋ผ๋ฉด ์๋ฅธ๋ค
search(y, x, size / 2);
search(y + size / 2, x, size / 2);
search(y, x + size / 2, size / 2);
search(y + size / 2, x + size / 2, size / 2);
}
private static boolean isSame(int y, int x, int color, int size) {
for (int i = y; i < y + size; i++) {
for (int j = x; j < x + size; j++) {
if (color != map[i][j])
return false;
}
}
return true;
}
}
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA_3307] ์ต์ฅ ์ฆ๊ฐ ์์ด(LIS, Longest Increasing Subsequence) (0) | 2022.10.06 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ณดํธ์์์ ์ค์ฑํํ ๋๋ฌผ (0) | 2022.10.06 |
[๋ฐฑ์ค] 10814: ๋์ด์ ์ ๋ ฌ(Java) (0) | 2022.10.03 |
[๋ฐฑ์ค_์คํจ] (0) | 2022.10.02 |
[SWEA]1249: ๋ณด๊ธ๋ก D4(Java) (0) | 2022.10.02 |
reply