본문 바로가기
알고리즘

[알고리즘/백준] 1992번 쿼드 트리 Python 파이썬

by 배애앰이 좋아 2023. 3. 17.
반응형

 

이번 문제는 여러모로 아쉬운 문제였습니다.

 

 

이미지의 압축 표현을 구하는 문제로 풀면서 여러가지 고려할 점이 있는 문제인데 저 같은 경우 처음에 사진이 안 뜨는 바람에 검색하다가 다른 분들의 코드를 봐버려서 쉽게 풀어버린 듯합니다. 실제로는 어떻게 사분할할지 표시 경우 어떻게 해줄지 생각하고 고민할 부분이 많았다고 생각합니다.

 

다음과 같은 코드로 통과하였습니다.

 

import sys
input = sys.stdin.readline

n = int(input())
img_list = [list(map(int, input().strip())) for _ in range(n)]

def check_img(x, y, n):
    num = img_list[x][y]
    for i in range(x, x+n):
        for j in range(y, y+n):
            if img_list[i][j] != num:
                print("(", end='')
                n = n // 2
                check_img(x, y, n)
                check_img(x, y + n, n)
                check_img(x + n, y, n)
                check_img(x + n, y + n, n)
                print(")", end='')
                return 1
    if num == 1:
        print(1, end='')
    else:
        print(0, end='')

check_img(0,0,n)

 

위 코드 중에 유용했던 부분은 list(map(int, input().strip())) 를 원래는 list(map(int, input())) 으로 썼는데 이 경우 \n 문자를 int 형으로 못 변한한다고 떠서 input().strip() 이렇게 붙여주면 자동으로 줄바꿈은 없애줍니다. 종종 붙은 문자를 입력으로 주어지는 경우가 많으니 외워놓으면 좋을 거 같습니다.

 

반응형

댓글