Problem solving
백준 12946번 육각 보드 (Python 3)
storkbear
2022. 9. 8. 17:09
Baekjoon online judge 12946번 파이썬
링크
https://www.acmicpc.net/problem/12946
12946번: 육각 보드
크기가 N × N인 육각 보드가 주어진다. 아래 그림은 N = 1, 2, 3, 4인 경우의 그림이다. 육각 보드의 일부 칸을 색칠하려고 한다. 두 칸이 변을 공유하는 경우에는 같은 색으로 칠할 수 없다. 어떤 칸
www.acmicpc.net
소스코드
import sys
input=sys.stdin.readline
index=[[-1,0],[-1,1],[0,-1],[0,1],[1,0],[1,-1]]
sys.setrecursionlimit(10**8)
color=0
def dfs(y,x):
global color
color=max(color,1)
for indy,indx in index:
ny=indy+y
nx=indx+x
if 0<=nx<n and 0<=ny<n and map_data[ny][nx]=='X':
if visited[ny][nx]==0:
visited[ny][nx]=-visited[y][x]
dfs(ny,nx)
color=max(color,2)
else:
if visited[ny][nx]==visited[y][x]:
color=max(color,3)
return
n=int(input())
map_data=[list(input().rstrip()) for _ in range(n)]
visited=[[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
for j in range(n):
if map_data[i][j]=='X' and visited[i][j]==0:
visited[i][j]=1
dfs(i,j)
print(color)