철갑이의 이모저모

[백준] 1992번(쿼드트리) with Python 본문

알고리즘

[백준] 1992번(쿼드트리) with Python

철갑 2020. 10. 17. 20:00
728x90

문제

www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

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

www.acmicpc.net

 

풀이

2630번 색종이 만들기 문제와 같은 유형이다.

www.acmicpc.net/problem/2630

 

2630번: 색종이 만들기

첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.

www.acmicpc.net

 

 

[백준] 2630번(색종이 만들기) with Python

문제 www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄..

happylsm76.tistory.com

import sys

N = int(sys.stdin.readline())
quadTree = [list(map(int,sys.stdin.readline().strip())) for _ in range(N)]

def solution(x, y, N) :
  image = quadTree[x][y]
  for i in range(x, x+N) :
    for j in range(y, y+N) :
      if image != quadTree[i][j] :
        print('(', end='')
        solution(x,y,N//2)
        solution(x,y+N//2,N//2)
        solution(x+N//2,y,N//2)
        solution(x+N//2,y+N//2,N//2)
        print(')', end='')
        return     
  if image == 0 :
    print('0', end='')
  else :
    print('1', end='')
  

solution(0,0,N)

728x90