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 |
Tags
- 백준 18222
- BFS
- 코딩테스트
- 분할정복
- 스프링 에러
- 백준
- daily challenge
- 코테
- dfs
- java leetcode
- Java
- 카카오
- leetcode 1721
- 프로그래머스 java
- 파이썬
- 리트코드 자바
- leetcode
- 자바 5464
- 백준 16935
- 리트코드 1557
- java 프로그래머스
- 자바 리트코드
- DP
- 프로그래머스
- 자바
- 인텔리제이 에러
- 리트코드
- 스택
- 그래프 자바
- 구현
Archives
- Today
- Total
레벨업 일지
[Java] 백준 1992. 쿼드트리 본문
문제
1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또
www.acmicpc.net
풀이
풀이 알고리즘은 다음과 같다.
- 주어진 크기 N에서 2중for 탐색으로 배열을 모두 1 인지 0 인지 검사를 한다.
- 모두 1이거나 0 이면 1 또는 0 을 출력한다.
- 그렇지 않으면, 재귀 탐색으로 subarray를 탐색을 구현한다.
코드
import java.io.*;
import java.util.*;
public class Main {
int m[][];
int ans;
int theta;
BufferedWriter bw;
public static void main(String args[]) throws IOException {
Main m = new Main();
m.solution();
}
public void solution() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
String str;
m = new int[N][N];
for(int i = 0; i< N ;i++){
str = br.readLine();
for(int j = 0 ;j < N ;j ++){
m[i][j] =str.charAt(j) -'0';
}
}
recursiveF(N, 0, 0);
bw.close();
}
public void recursiveF(int N , int x, int y)throws IOException{
int n = check(x,y,N);
if(n != -1 ){
bw.write(Integer.toString(n));
}else if( N/2 >0){
bw.write("(");
recursiveF(N/2, x, y);
recursiveF(N/2, x, y + N/2);
recursiveF(N/2, x + N/2, y);
recursiveF(N/2, x+N/2, y+N/2);
bw.write(")");
}
}
public int check(int x, int y, int N){
int z = 0;
boolean f = false;
for(int i = x; i< x + N ;i++){
if(f)break;
for (int j = y; j < y + N; j++) {
if(f)break;
if(m[i][j] != z){
f = true;
}
}
}
if(!f)return z;
f = false;
z = 1;
for(int i = x; i< x + N ;i++){
if(f)break;
for (int j = y; j < y + N; j++) {
if(f)break;
if(m[i][j] != z){
f = true;
}
}
}
if(!f)return z;
return -1;
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[Java] 백준 10799 쇠막대기 (0) | 2023.06.29 |
---|---|
[Java] 백준 5464.주차장 (0) | 2023.06.27 |
[Java] 백준 2573.빙산 (0) | 2023.05.15 |
[Java] 백준 16236. 아기 상어 (0) | 2023.05.15 |
[Java] 백준 10026 적록색약 (0) | 2023.05.12 |
Comments