[실버1] 1992번 : 쿼드트리

Quesuemon·2022년 9월 27일
0

코딩테스트 준비

목록 보기
111/111

🛠 문제

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


👩🏻‍💻 해결 방법

프로그래머스 쿼드압축 후 개수 세기와 같은 유형의 문제다
다만 출력할 때 압축을 진행하는 경우 ( )를 print하는 것이 필요하다


소스 코드

n = int(input())
arr = [list(map(int, input())) for _ in range(n)]

def comp(x, y, n):
  init = arr[x][y]

  for i in range(x, x+n):
    for j in range(y, y+n):
      if init != arr[i][j]:
        init = -1
        break

  if init == -1:
    print('(', end='')
    n = n // 2
    comp(x, y, n) # 오른쪽 위
    comp(x, y+n, n) # 왼쪽 위
    comp(x+n, y, n) # 오른쪽 아래
    comp(x+n, y+n, n) # 왼쪽 아래
    print(')', end='')
  
  elif init == 0:
    print(0, end='')
  else:
    print(1, end='')

comp(0, 0, n)

0개의 댓글

관련 채용 정보