CodingTest/Programmers

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

EEOOOO 2022. 6. 30. 01:55

/  구현 1  /

 

def solution(m, n, board):
    answer = 0
    # 각 값 쉽게 접근 위해 배열화
    for i in range(m):  
        board[i] = list(board[i].strip()) 
    # popBlock 시작위해 무작위값 대입
    popBlocks = ['a']
    while popBlocks:
        # 전체 값 돌며 있나 체크 좌상이 기준
        popBlocks = []
        visited = [[False]*n * for _ in range(m)]
        for i in range(m-1):
            for j in range(n-1):
                ij = check(i, j, board)
                if ij:
                    popBlocks.extend(check(i, j, board, visited))# 지워질 아이템 인덱스 배열
                # 아래 아이템 먼저 빠지라고 정렬
                popBlocks.sort(key = lambda k: k[0], reverse = True)
                if popBlocks:
                    # 지우기
                    for block in popBlocks:
                        x, y = block
                        print(x, y)
                        while x > 0:
                            board[x][y] = board[x-1][y]
                            x -= 1
                        board[x][y] = '0' # x == 0
    return answer

def check(i, j, board, visited): # bfs같이 퍼뜨리며 체크하고 싶은데 가능하겠냐..? 구현해봐
    result = []
    visited[i][j] = True
    if not visited[i][j]:
        result.append([i, j+1])
    if i+1 <= len(board) and j+1 <= len(board[0]):
        if board[i][j] == board[i][j+1] and not visited[i][j+1]:
            result.append([i,j+1])
            visited[i][j+1] = True
            
        if board[i][j] == board[i+1][j] and not visited[i+1][j]:
            result.append([i+1,j])
            visited[i+1][j] = True
        if board[i][j] == board[i+1][j+1] and not visited[i+1][j+2]:
            result.append([i+1][j+1])
            visited[i+1][j+1]
        
        
    else:
        return result
        
# 지금 안되는거. 1) bfs퍼트리는거

 

진짜 별별.. 방법으로 이리 고민 저리 고민 2시간을 낑낑댔는데 안 될 것 같아 물러납니다.

check 구현이 안 됩니다. 

 

검색해서 공부하기로 합니다.

 


https://my-coding-notes.tistory.com/226

 

[프로그래머스 / 파이썬] 프렌즈4블록 (2018 KAKAO BLIND RECRUITMENT)

코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카

my-coding-notes.tistory.com