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 |
댓글