본문 바로가기

Coding Test/Programmers

[프로그래머스/파이썬] [1차] 프렌즈4블록

728x90

 

 

나의 풀이

def solution(m, n, board):
    answer = 0
    board = [list(board[i]) for i in range(m)]
    while True:
        check = [[False] * n for _ in range(m)]
        for i in range(m - 1):
            for j in range(n - 1):
                if board[i][j] == board[i][j + 1] == board[i + 1][j] == board[i + 1][j + 1] != 'X':
                    check[i][j] = check[i][j + 1] = check[i + 1][j] = check[i + 1][j + 1] = True
        count = sum([sum(check[i]) for i in range(m)])
        if count:
            for i in range(m):
                for j in range(n):
                    if check[i][j]:
                        board[i][j] = 'X'
            for j in range(n):
                for _ in range(m):
                    for i in range(m - 1, 0, -1):
                        if board[i][j] == 'X':
                            board[i][j], board[i - 1][j] = board[i - 1][j], board[i][j]
            answer += count
        else:
            break
    return answer
반응형