[Java] BOJ1922, 백준 - 쿼드트리

2022. 2. 17. 00:33·알고리즘/문제풀이
728x90

https://www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또

www.acmicpc.net

 

간단한 분할정복 문제이다.

N이 무조건 2의 거듭제곱 꼴로 주어진다.

문제 이름 쿼드트리 그대로 네모를 사등분하여 생각해주면 된다.

네모의 모든 칸이 1또는 0으로 채워져있으면 압축 가능하기때문에, 이 조건을 넣어서 String값을 return해주면 된다.

 

비트 시프팅을 이용하여 아주아주 간단한 소스코드로 풀 수 있다.

import java.io.*;

public class Main {

	private static char[][] arr;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		arr = new char[n][n];
		for (int i = 0; i < n; i++)
			arr[i] = br.readLine().toCharArray();
		System.out.println(go(0, 0, n));
	}

	private static String go(int i, int j, int n) {
		if (n <= 1)
			return String.valueOf(arr[i][j]);

		n >>= 1;
		// 좌상
		String s1 = go(i, j, n);
		// 우상
		String s2 = go(i, j + n, n);
		// 좌하
		String s3 = go(i + n, j, n);
		// 우하
		String s4 = go(i + n, j + n, n);

		// 0만 포함하거나 1만 포함해야함
		// 0과 1 둘다 포함하면 안됨
		if (!(s1.contains("0") && s1.contains("1")) && s1.equals(s2) && s2.equals(s3) && s3.equals(s4))
			return s1;
		else
			return "(" + s1 + s2 + s3 + s4 + ")";
	}
}

 

'알고리즘 > 문제풀이' 카테고리의 다른 글

[Java] BOJ16954, 백준 - 움직이는 미로 탈출  (0) 2022.02.25
[Java] BOJ15683, 백준 - 감시  (0) 2022.02.18
[Java] BOJ9466, 백준 - 텀 프로젝트  (0) 2022.02.16
[Java] BOJ2812, 백준 - 크게 만들기  (0) 2022.02.16
[Java] BOJ1074, 백준 - Z  (0) 2022.02.15
'알고리즘/문제풀이' 카테고리의 다른 글
  • [Java] BOJ16954, 백준 - 움직이는 미로 탈출
  • [Java] BOJ15683, 백준 - 감시
  • [Java] BOJ9466, 백준 - 텀 프로젝트
  • [Java] BOJ2812, 백준 - 크게 만들기
kkap999
kkap999
IT에 관심 가득한 갑갑이의 개발&스터디 블로그
  • kkap999
    갑갑이의 개발세상
    kkap999
    • 분류 전체보기 (95)
      • Backend (1)
        • Java&Spring&Servlet (8)
        • DB (0)
      • 알고리즘 (78)
        • 문제풀이 (70)
        • 자료구조 (6)
        • 그 외 (2)
      • App&FE (3)
        • FE (1)
        • Flutter (2)
      • Computer Science (0)
        • 네트워크 (0)
        • 컴퓨터기초 (0)
      • Cloud (0)
        • AWS (0)
        • Azure (0)
        • gcp (0)
      • 잡담&일상 (4)
        • 일상 (1)
        • 잡담 (2)
        • 음악 (1)
  • 태그

    BOJ
    BOJ15649
    알고리즘
    백준
    N과M(1)
  • 링크

    • github
  • 인기 글

  • 최근 글

  • 07-22 16:46
  • 전체
    오늘
    어제
  • 반응형
  • hELLO· Designed By정상우.v4.10.3
kkap999
[Java] BOJ1922, 백준 - 쿼드트리
상단으로

티스토리툴바