본문 바로가기
코딩테스트 파이썬/파이썬 프로그래머스 2단계

[1차] 프렌즈4블록

by 세용용용용 2023. 8. 11.

코딩테스트 연습 - [1차] 프렌즈4블록 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 코드

def solution(m,n,board):
    answer = 0
    for i in range(len(board)):
        board[i] = list(board[i])


    while True:
        # 터질위치를 집합으로 생성해줌
        bomb = set()
        for i in range(m-1):
            for j in range(n-1):
                if board[i][j] == []:
                    continue
               
                if board[i][j]==board[i][j+1] and board[i][j]==board[i+1][j+1] and board[i][j]==board[i+1][j]:
                    bomb.add((i,j))
                    bomb.add((i,j+1))
                    bomb.add((i+1,j+1))
                    bomb.add((i+1,j))
       
        #터질게 있으면 answer증감하고
        #공백으로 처리
        if bomb:
            answer += len(bomb)
            for i,j in bomb:
                board[i][j] = []
        #터트릴게 없으면 break
        else:
            break
       
        #이제는 위치를 이동시켜주자
        while True:
            move_check = 0
            for i in range(m-1):
                for j in range(n):
                    # 공백이면 continue
                    if board[i][j] == []:
                        continue
                   
                    #위치 이동 시켜주기
                    if board[i+1][j] == []:
                        move_check+=1
                        board[i+1][j] = board[i][j]
                        board[i][j] = []
           
            #위치가 변하지 않았으면 break
            if move_check == 0:
                break

    #print(answer)
    #print(board)        
    return answer
solution(6,6,["TTTANT", "RRFACC", "RRRFCC", "TRRRAA", "TTMMMF", "TMMTTJ"])

'코딩테스트 파이썬 > 파이썬 프로그래머스 2단계' 카테고리의 다른 글

전력망을 둘로 나누기  (0) 2023.09.07
가장 큰 수  (0) 2023.08.14
모음 사전  (0) 2023.07.28
스킬트리  (0) 2023.07.28
게임 맵 최단거리  (0) 2023.07.26