📖 문제
https://programmers.co.kr/learn/courses/30/lessons/17679
💻 코드
import copy
from collections import deque
def pop(m, n, board):
new_board = copy.deepcopy(board)
isFinished = True
for r in range(m - 1):
for c in range(n - 1):
if board[r][c] == board[r + 1][c] == board[r][c + 1] == board[r + 1][c + 1] != 0:
new_board[r][c] = new_board[r + 1][c] = new_board[r][c + 1] = new_board[r + 1][c + 1] = 0
isFinished = False
return new_board, isFinished
def fill_blank(m, n, b):
dq = deque()
for c in range(n):
for r in range(m):
if b[r][c] != 0:
dq.append(b[r][c])
for _ in range(m - len(dq)):
dq.appendleft(0)
for r in range(m):
b[r][c] = dq[r]
dq.clear()
return b
def solution(m, n, board):
b = [list(row) for row in board]
while True:
b, isFinished = pop(m, n, b)
if isFinished:
return sum(row.count(0) for row in b)
b = fill_blank(m, n, b)
🙌 한마디
문제의 요구사항에 알맞게 구현하면 되는 문제였다. 그러나 테스트 케이스 7번만 통과가 되지 않아 코드를 검토하는데 시간이 걸렸다.
for r in range(m):
for c in range(m):
알고보니 n을 m으로 타이핑했다. 이런 허무한 실수는 빨리 발견할 수 있도록 실수 노트를 만들어야겠다.
'Problem Solving > 📕Programmers' 카테고리의 다른 글
[Programmers] n진수 게임 (Python) (0) | 2021.10.08 |
---|---|
[Programmers] 캐시 (Python) (0) | 2021.10.07 |
[Programmers] 뉴스 클러스터링 (Python) (0) | 2021.10.06 |
[Programmers] 파일명 정렬 (Python) (0) | 2021.10.05 |
[Programmers] 방금그곡 (Python) (0) | 2021.10.03 |