def pop_num(b, m, n):
pop_set = set()
# search
for i in range(1, n):
for j in range(1, m):
if b[i][j] == b[i - 1][j - 1] == b[i - 1][j] == b[i][j - 1] != '_':
pop_set |= set([(i, j), (i - 1, j - 1), (i - 1, j), (i, j - 1)])
# set_board
for i, j in pop_set:
b[i][j] = 0
for i, row in enumerate(b):
empty = ['_'] * row.count(0)
b[i] = empty + [block for block in row if block != 0]
return len(pop_set)
def solution(m, n, board):
count = 0
b = list(map(list, zip(*board))) # 행열 바꾸기
while True:
pop = pop_num(b, m, n)
if pop == 0: return count
count += pop
알게된 것
Unpacking 역할
*는 unpacking 역할을 한다는 것을 알고 있었는가? 쉽게 말해서 괄호 안에 있던 데이터들을 풀어 각각으로 만들어 준다.