Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- IT시스템개발
- 첫 리액트
- 뷰 리액트
- SBS 개발
- 면접
- 웹 개발 면접 질문
- 뷰 리액트 비교
- 쟈스
- 뷰
- MySQL
- 프로젝트 후기
- 알고리즘
- 자바
- 대문자
- 사내시스템
- 오라클
- 트리
- e-HR
- 백준알고리즘
- URL입력
- 첫 React
- 리액트
- 간단 프로젝트
- Vue.js
- 백준
- SBS 본사
- 1차면접
- 경력직
- CompositionAPI
- react
Archives
- Today
- Total
리주의 프로그래밍 공부
[2630] 색종이 만들기_java 본문
분할정복 문제
배열의 크기 n인 배열 arr을 받아 0 또는 1로 채워져있는지 확인
-> 아니라면 1/4로 쪼개어서 재차확인
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
//result[0]은 0으로 채워진 부분색종이 개수, result[1]은 1로 채워진 부분색종이 개수
static int[] result = new int[2];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < n; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
check(arr, n);
System.out.print(result[0] + "\n" + result[1]);
}
//n*n 배열 arr과 배열의 크기인 n
public static void check(int[][] arr, int n) {
int[][] zero = new int[n][n];
int[][] one = new int[n][n];
for (int[] line : one) {
Arrays.fill(line, 1);
}
if (Arrays.deepEquals(arr, zero)) {
result[0]++;
return;
} else if (Arrays.deepEquals(arr, one)) {
result[1]++;
return;
}
if (n == 1) {
return;
}
check(seperate(arr, 0, 0, n), n / 2);
check(seperate(arr, n / 2, 0, n), n / 2);
check(seperate(arr, 0, n / 2, n), n / 2);
check(seperate(arr, n / 2, n / 2, n), n / 2);
return;
}
//n*n 배열 arr와 시작점(x,y), 배열의 크기 n
public static int[][] seperate(int[][] arr, int x, int y, int n) {
int[][] arr_sep = new int[n / 2][n / 2];
for (int i = 0; i < n / 2; i++) {
for (int j = 0; j < n / 2; j++) {
arr_sep[i][j] = arr[i + x][j + y];
}
}
return arr_sep;
}
}
ㅇ
'알고리즘 공부(백준)' 카테고리의 다른 글
[2293] 동전 1 (0) | 2021.01.04 |
---|---|
[11286] 절댓값 힙 (0) | 2021.01.02 |
[11279] 최대 힙 (0) | 2021.01.02 |
[1920] 수 찾기 (0) | 2020.12.28 |
[10816] 숫자 카드 2 (0) | 2020.12.22 |