📖 문제 링크
https://www.acmicpc.net/problem/1780
1780번: 종이의 개수
N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수
www.acmicpc.net
👩💻 문제풀이
백준 2630 - 색종이 만들기 문제를 먼저 풀면 쉽게 해결할 수 있다.
2630번은 각 변을 2개로 나눠가는 문제였다면, 본 문제는 3개로 나눈다.
9사분면을 만들 수 있도록 행렬을 나눠주면 쉽게 해결 가능!
✅ 최종 코드
import sys
input = sys.stdin.readline
n = int(input())
paper = [list(map(int, input().split())) for _ in range(n)]
result = []
def dividePaper(x, y, n):
check = paper[x][y]
for i in range(x, x+n):
for j in range(y, y+n):
if check != paper[i][j]:
dividePaper(x, y, n//3)
dividePaper(x, y+n//3, n//3)
dividePaper(x, y+(n//3*2), n//3)
dividePaper(x+n//3, y, n//3)
dividePaper(x+n//3, y+n//3, n//3)
dividePaper(x+n//3, y+(n//3*2), n//3)
dividePaper(x+(n//3*2), y, n//3)
dividePaper(x+(n//3*2), y+n//3, n//3)
dividePaper(x+(n//3*2), y+(n//3*2), n//3)
return
if check == 0:
result.append(0)
elif check == -1:
result.append(-1)
else:
result.append(1)
dividePaper(0,0,n)
print(result.count(-1))
print(result.count(0))
print(result.count(1))
'알고리즘 > Python' 카테고리의 다른 글
[백준/Python] 10451번: 순열 사이클 (0) | 2022.03.05 |
---|---|
[백준/Python] 1697번: 숨바꼭질 (BFS활용) (0) | 2022.03.04 |
[백준/Python] 1707번: 이분 그래프 (0) | 2022.03.01 |
[백준/Python] 11724번: 연결 요소의 개수 (0) | 2022.02.11 |
[백준/Python] 11576번: Base Conversion (0) | 2022.02.08 |