본문 바로가기

코딩테스트 준비/[프로그래머스]

[1차] 프렌즈4블록 2018 KAKAO BLIND RECRUITMENT - 프로그래머스 python

https://programmers.co.kr/learn/courses/30/lessons/17679?language=python3 

 

코딩테스트 연습 - [1차] 프렌즈4블록

프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙

programmers.co.kr

def solution(h, w, board):
    answer = 0
    board = [list(i) for i in board]
    matched = True
    
    while matched:
        matched = set()
        # find 4bloacks in the board
        for i in range(h-1):
            for j in range(w-1):
                if board[i][j] == board[i+1][j] \
                == board[i][j+1] == board[i+1][j+1] != '#':
                    for ii in range(2):
                        for jj in range(2):
                            matched.add((i+ii, j+jj))
        # erase matched blocks
        for i, j in matched:
            board[i][j] = '#'
        # drop rest blocks
        for _ in range(h):
            for i in range(h-1, 0, -1):
                for j in range(w):
                    if board[i][j] == '#':
                        board[i][j], board[i-1][j] = board[i-1][j], board[i][j]
        answer += len(matched)
    
    return answer