본문 바로가기
온라인 저지/BOJ

[BOJ/Java] 1992 쿼드트리

by ahj 2022. 2. 17.
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class BOJ1992 {
	static char[][] video;

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());
		video = new char[n][n];
		for (int i = 0; i < n; i++) {
			video[i] = br.readLine().toCharArray();
		}
		br.close();
		System.out.println(compress(0, 0, n));
	}

	private static String compress(int row, int col, int length) {

		if (length == 1) {
			return Character.toString(video[row][col]);
		}
		StringBuilder tmp = new StringBuilder();

		tmp.append(compress(row, col, length / 2));
		tmp.append(compress(row, col + length / 2, length / 2));
		tmp.append(compress(row + length / 2, col, length / 2));
		tmp.append(compress(row + length / 2, col + length / 2, length / 2));

		if (tmp.toString().equals("0000") || tmp.toString().equals("1111")) {
			tmp.setLength(tmp.length() - 3);
			return tmp.toString();
		} else {
			return "(" + tmp.toString() + ")";
		}
	}

}

flat한 사고로 잘 접근해본 것 같다. 다만 재귀에서 넘겨주는 범위를 잘못 생각하고 한참을 고민하다가 시간을 많이 소요했다. 꽤 마음에 드는 풀이 점점 재귀에 익숙해져 가는 기분이다 ㅎㅎ

'온라인 저지 > BOJ' 카테고리의 다른 글

[BOJ/Java] 3109 빵집  (0) 2022.02.18
[BOJ/Java] 17298 오큰수  (0) 2022.02.17
[BOJ/Java] 14889 스타트와 링크  (0) 2022.02.17
[BOJ/Java] 1182 부분수열의 합  (0) 2022.02.16
[BOJ/Java] 11723 집합  (0) 2022.02.15

댓글