문제를 풀면서 알게 된 사실
– 보통 오류가 발생하면 테스트 케이스가 1.1일 때 예외가 발생하는 경우가 많다.
2차원 배열에 문자 값을 삽입하는 구문
arr = (list(input()) for _ in range(m))
import sys
sys.setrecursionlimit(1000000)
n,m = map(int,input().split()) #가로, 세로
arr = (list(input()) for _ in range(m))
ok = ((False) * n for i in range(m))
W = ()
B = ()
dx,dy = (-1,1,0,0), (0,0,-1,1)
cnt = 0
total1 = 0
total2 = 0
def dfs(x,y,team):
global cnt
cnt+=1
ok(x)(y) = True #방문처리
for i in range(4):
rx = x + dx(i)
ry = y + dy(i)
# 처음 dfs 접근했을때 값과 arr(rx)(ry)의 값이 같은지
if (0<=rx<m) and (0<=ry<n) and arr(rx)(ry) == team:
#방문 하지 않았을 경우
if not ok(rx)(ry):
dfs(rx,ry,team)
for i in range(m):
for j in range(n):
if not ok(i)(j): # if false
dfs(i, j, arr(i)(j))
if arr(i)(j) == 'W': # W team
W.append(cnt**2) #제곱해서 리스트에 삽입
else: # B team
B.append(cnt**2)
cnt = 0 #cnt 초기화
for item in W:
total1 += item
for item in B:
total2 += item
print(total1, total2)