https://school.programmers.co.kr/learn/courses/30/lessons/17679#
def solution(m, n, board):
board = [list(r) for r in board]
answer = 0
def game(m, n, board):
exploded = []
ret = 0
for i in range(m-1):
for j in range(n-1):
ul = board[i][j]
ur = board[i][j+1]
dl = board[i+1][j]
dr = board[i+1][j+1]
if all((elem == ul and elem != -1) for elem in [ul, ur, dl, dr]):
if [i, j] not in exploded:
exploded.append([i, j])
ret += 1
if [i, j+1] not in exploded:
exploded.append([i, j+1])
ret += 1
if [i+1, j] not in exploded:
exploded.append([i+1, j])
ret += 1
if [i+1, j+1] not in exploded:
exploded.append([i+1, j+1])
ret += 1
#위에 있던 것들을 아래로 내려보내는 과정
for r, c in exploded:
while r > 0:
board[r][c] = board[r-1][c]
board[r-1][c] = -1
r -= 1
return ret
while True:
found = game(m, n, board)
if found == 0:
break
else:
answer += found
return answer