[Baekjoon] 1992. 쿼드트리

2023. 1. 30. 17:16·코딩테스트/Python
728x90
반응형

🔗 Problem Link

 

1992번: 쿼드트리

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

www.acmicpc.net


❔Thinking

  • 0과 1로 이루어진 2차원 데이터 구조를 압축한 결과를 반환한다.
  • 해당 구조가 모두 0이거나 모두 1이 아닐경우, 사분면으로 나누어 다시 압축을 시도한다.

💻Solution

import sys
input = sys.stdin.readline

N = int(input())
board = []
result = ''
for _ in range(N):
    board.append(list(map(int, input().rstrip())))

def check(x,y,size):
    global board
    flag = board[x][y]
    for i in range(x,x+size):
        for j in range(y,y+size):
            if board[i][j] != flag:
                return False
    return True

def dfs(x,y,size):
    global board
    global result
    if size == 1 or check(x,y,size) is True: # board가 모두 0 혹은 1인 경우
        result += str(board[x][y])
        return
    result += '('
    size //= 2
    tmp = []
    # 1사분면
    dfs(x,y,size)
    # 2사분면
    dfs(x,y+size,size)
    # 3사분면
    dfs(x+size,y,size)
    # 4사분면
    dfs(x+size,y+size,size)
    result += ')'

dfs(0,0,N)
print(result)

🗝️keypoint

  1. board와 반환할 result를 global변수로 정의하여 함수들이 호출되면서 board와 result를 활용할 수 있도록 한다.
  2. 사분면으로 나누기 때문에, 매번 board의 사이즈를 반으로 줄여가며 확인한다.
저작자표시

'코딩테스트 > Python' 카테고리의 다른 글

[Data Structure] 트리  (0) 2023.03.30
GCD(Great Common Divisior), LCM(Least Common Multiple)  (1) 2023.03.24
[Baekjoon] 1389. 케빈 베이컨의 6단계 법칙  (0) 2023.01.30
[Programmers] Level 3. 경주로 건설  (0) 2023.01.20
[Baekjoon] 1012. 유기농 배추  (1) 2023.01.20
'코딩테스트/Python' 카테고리의 다른 글
  • [Data Structure] 트리
  • GCD(Great Common Divisior), LCM(Least Common Multiple)
  • [Baekjoon] 1389. 케빈 베이컨의 6단계 법칙
  • [Programmers] Level 3. 경주로 건설
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188) N
      • ML_DL (39) N
        • MUJAKJUNG (무작정 시리즈) (18) N
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Baekjoon] 1992. 쿼드트리
상단으로

티스토리툴바