def solution(m, n, board):
answer = 0
# 리스트로 변경
board = [list(board[i]) for i in range(m)]
cnt = 0
# 좌표 기록용 set
coord = set()
while (1):
#보드를 순회
for i in range(m-1):
for j in range(n-1):
t = board[i][j]
if t == []:
continue
# 지워지는 블록일 경우 set에 추가
if board[i+1][j] == t and board[i][j+1] == t and board[i+1][j+1] == t:
coord.add((i, j))
coord.add((i+1, j))
coord.add((i, j+1))
coord.add((i+1, j+1))
if coord:
cnt += len(coord)
for i,j in coord:
board[i][j] = []
coord = set()
# 없다면 함수 종료
else:
return cnt
# 블럭을 아래로 당겨줌
while True:
moved = 0
for i in range(m-1):
for j in range(n):
if board[i][j] and board[i+1][j]==[]:
board[i+1][j] = board[i][j]
board[i][j] = []
moved = 1
if moved == 0:
break
return answer