https://school.programmers.co.kr/learn/courses/30/lessons/17679
https://school.programmers.co.kr/learn/courses/30/lessons/17679
지울 수 있는 블록을 추가, 삭제, 내림
def solution(m, n, board):
answer = 0
board = [ list(b) for b in board]
while True:
remove = []
# 블록 4개가 동일한 경우를 찾는다
for i in range(m-1):
for j in range(n-1):
if (
board[i][j] != "" and
board[i+1][j] == board[i][j] and
board[i][j+1] == board[i][j] and
board[i+1][j+1] == board[i][j]
) :
remove.append([i,j])
if len(remove) == 0 :
break
# 지운다
for x,y in remove:
if board[x][y] != "" :
board[x][y] = ""
answer += 1
if board[x+1][y] != "":
board[x+1][y] = ""
answer += 1
if board[x][y+1] != "":
board[x][y+1] = ""
answer += 1
if board[x+1][y+1] != "":
board[x+1][y+1] = ""
answer += 1
# 내린다.
for j in range(n):
idx = 0
for i in range(m-1, -1, -1):
if board[i][j] == "":
idx +=1
elif board[i][j] != "" and idx > 0 :
board[i+idx][j] = board[i][j]
board[i][j] = ""
return answer