백준1780(파이썬) - 종이의 개수
resilient
·2021. 6. 1. 22:08
728x90
반응형
https://www.acmicpc.net/problem/1780
- 이 문제는 처음 풀때는 각 길이마다 끊어가지고 오른쪽, 아래쪽으로 bfs를 사용해서 풀었다.
- 근데 계속 답이 맞지 않아서 결국에는 시간이 좀 걸리더라도 for문을 이용한 풀이로 풀었다.
- 이중 for문으로 2차원 배열을 돌면서 처음 시작했던 x,y값과 다르면 한 변을 나누어 가면서 함수를 돌리는 방식으로 풀었다.
import sys
input = sys.stdin.readline
n = int(input())
graph =[list(map(int,input().split())) for _ in range(n)]
#-1,0,1 카운트를 저장함
minus_cnt = 0
zero_cnt = 0
one_cnt = 0
def function(x,y,length):
global cnt,minus_cnt,zero_cnt,one_cnt
for i in range(x,x+length):
for j in range(y,y+length):
#다른 수의 종이조각이 나왔을때
if graph[x][y] != graph[i][j]:
for a in range(3):
for b in range(3):
function(x+length//3*a,y+length//3*b,length//3)
return
# 다 같은수로 이루어진 종이조각일 때,
print(x,y)
if graph[x][y] == 0:
zero_cnt += 1
elif graph[x][y] == -1:
minus_cnt +=1
elif graph[x][y] == 1:
one_cnt += 1
#9개로 자르려면 3 x 3 으로 나눠야한다.
function(0,0,n)
print(minus_cnt)
print(zero_cnt)
print(one_cnt)
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준1992(파이썬) - 쿼드트리 (0) | 2021.06.04 |
---|---|
백준1389(파이썬) - 케빈 베이컨의 6단계 법칙 (0) | 2021.06.03 |
백준3079(파이썬) - 입국심사 (0) | 2021.05.29 |
[백준]18111(파이썬) - 마인크래프트 (2) | 2021.05.27 |
백준1074(파이썬) - Z (0) | 2021.05.27 |