https://programmers.co.kr/learn/courses/30/lessons/17679
주어진 조건대로 구현하면 된다.
나는 set으로 중복을 방지하고, 블록이 내려오는 것은
제거할 블록을 x 순으로 오름차순 정렬한 후 제거할 블록부터 맨 위칸까지 한 칸씩 모두 훑는 방식으로 구현했다.
나의 코드
def solution(m, n, board):
answer = 0
check = True
for i in range(m):
board[i] = list(board[i])
while check:
delete = set()
check = False
for x in range(m):
for y in range(n):
target = board[x][y]
if 0<= x+1 <m and 0<= y+1 <n:
if (target == board[x][y+1] == board[x+1][y] == board[x+1][y+1]) and target !='X':
delete.update([(x,y)],[(x,y+1)],[(x+1,y)],[(x+1,y+1)])
check = True
delete = sorted(list(delete),key = lambda x: x[0])
for d in delete:
x, y = d
for i in range(x,-1,-1):
if i!=0:
board[i][y] = board[i-1][y]
else:
board[i][y] = 'X'
answer += len(delete)
return answer
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 삼각 달팽이 (Python) (0) | 2021.11.02 |
---|---|
[프로그래머스] 2개 이하로 다른 비트(Python) (0) | 2021.11.02 |
[프로그래머스] 피로도 (Python) (0) | 2021.11.01 |
[프로그래머스] 배달 (Python) (0) | 2021.11.01 |
[프로그래머스] 괄호 회전하기 (Python) (0) | 2021.11.01 |
댓글