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

2021. 3. 16. 15:27·알고리즘/백준
728x90
반응형

문제

 

www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

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

www.acmicpc.net

 

코드

n = int(input())

tree = [list(map(int,(input()))) for _ in range(n)]
print(tree)
result = []

def quad_tree(x,y,n):
    global result
    color = tree[x][y]

    for i in range(x, x+n):
        for j in range(y, y+n):
            if color != tree[i][j]: # 범위안에 한개라도 다른경우는 4분면으로 나눠서 다시 검색
                result.append("(") # 4분면으로 나눌때 괄호를 친다.
                quad_tree(x,y,n//2)
                quad_tree(x, y+n//2, n//2)
                quad_tree(x+n//2, y, n//2)
                quad_tree(x+n//2, y+n//2, n//2)
                result.append(")")
                return
    result.append(color) # 재귀로 안들어가고 for문이 전부 다 끝난 상태이기 때문에 범위안에 모든수가 같다고 볼 수 있다.

quad_tree(0,0,n)
print("".join(map(str,(result))))

 

코드설명

n에 영상의 크기가 주어지고 n^2만큼 크기의 범위에 0과 1로 이어져 있다. 0과 1이 섞여있다면 4분면으로 나눠 압축하여 출력한다. 압축할때 괄호로 묶어준다.

 

quad_tree 함수가 실행이 되면 x,y범위값을 검사해 범위안에 서로 다른값이 있을경우 4등분으로 나눠주고 괄호를 쳐준다. 만약 재귀함수로 안들어가고 for문이 끝난다면 범위안에 값이 전부 같은 값이기 때문에 result에 append 해준다.

 

모든 재귀호출이 끝난뒤에 join을 이용해 result를 출력해준다.

 

반응형
저작자표시 (새창열림)

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

[백준] 14889번, 스타트와 링크 (Python)  (0) 2021.07.04
[백준] 2309번, 일곱난쟁이 (Python)  (0) 2021.07.02
[백준] 11866번 요세푸스 문제 0 (Python)  (0) 2021.03.16
[백준] 1541번 잃어버린 괄호 (Python)  (0) 2021.03.16
[백준] 2231번 분해합 (Python)  (0) 2021.03.15
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 14889번, 스타트와 링크 (Python)
  • [백준] 2309번, 일곱난쟁이 (Python)
  • [백준] 11866번 요세푸스 문제 0 (Python)
  • [백준] 1541번 잃어버린 괄호 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196)
      • study (1)
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1)
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    그리디
    인프런
    김영한
    버그
    조합
    spring
    카카오코딩테스트
    스파르타코딩클럽
    회고
    SFlash
    후기
    코딩테스트
    카카오인턴
    괄호
    실전프로젝트
    프로그래머스
    에러
    항해마켓
    java
    미니프로젝트
    정리
    알고리즘
    항해99
    SpringBoot
    파이썬
    orm
    브루트포스
    해결
    백준
    jpa
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 1992번 쿼드트리 (Python)
상단으로

티스토리툴바