BOJ 1992 쿼드트리

2020. 9. 18. 14:03·알고리즘/BOJ

www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

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

www.acmicpc.net

분할 정복으로 풀 수 있는 문제다.

처음엔 문제가 이해되지 않았는데 다음날 다시 읽어보니 이해가 됐다.

한 사각형에서 색이 전부 같지 않으면 ( 를 열고 쪼개 주고 전부 같은 색이면 )를 닫는다.

재귀적으로 들어갈 때에 좌상, 우상, 좌하, 우하 순서로 가는것에 주의해야 한다.

#include <iostream>
#include <string>
using namespace std;	
string ar[65];

void compress(int x, int y, int n) {
	auto tmp = ar[x][y];
	for (int i = x; i < x + n; i++) {
		for (int j = y; j < y + n; j++) {
			if (tmp != ar[i][j]) {
				cout << '(';
				compress(x, y, n / 2);
				compress(x, y + n / 2, n / 2);
				compress(x + n / 2, y, n / 2);
				compress(x + n / 2, y + n / 2, n / 2);
				cout << ')';
				return;
			}
		}
	}
	cout << tmp;
}

int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> ar[i];
	compress(0, 0, n);
	cout << endl;

	return 0;
}

크게 어려운 부분은 없었다.

'알고리즘 > BOJ' 카테고리의 다른 글

백준 9471 피사노 주기  (0) 2020.09.18
BOJ 1780 종이의 개수  (0) 2020.09.18
BOJ 10830 행렬 제곱  (0) 2020.09.16
BOJ 2343 기타 레슨  (0) 2020.09.15
BOJ 2512 예산  (0) 2020.09.14
'알고리즘/BOJ' 카테고리의 다른 글
  • 백준 9471 피사노 주기
  • BOJ 1780 종이의 개수
  • BOJ 10830 행렬 제곱
  • BOJ 2343 기타 레슨
khyu2
khyu2
  • khyu2
    dev log
    khyu2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘
        • BOJ
        • Programmers
        • Algorithm
        • SWEA
      • 개발
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    시뮬레이션
    냅색
    완전 탐색
    피보나치 수
    우선순위 큐
    이분 탐색
    조합
    dp
    프로그래머스
    구현
    완전탐색
    트리
    MST
    알고리즘
    피사노 주기
    행렬 제곱
    dfs
    분할 정복
    GREEDY
    크루스칼
    팰린드롬
    코딩테스트 연습
    BFS
    이분탐색
    SWEA
    큐
    소수
    유니온 파인드
    BOJ
    다익스트라
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khyu2
BOJ 1992 쿼드트리
상단으로

티스토리툴바