Python/Algorithm

[프로그래머스] 크레인 인형뽑기 게임 - Python

언킴 2023. 8. 24. 22:04
반응형

크레인 인형뽑기 게임 문제는 2019 카카오 개발자 겨울 인턴십에 나온 문제다. 크레인에서 인형을 뽑아 새로운 칸에 집어놓고 순서대로 일치되면 제거하고, 제거된 인형의 갯수를 출력하는 문제다

 

def solution(board, moves):
    nrow, ncol = len(board), len(board[0])
    answer = []
    counts = 0
    for m in moves:
        for i in range(nrow):
            if board[i][m-1]:
                answer.append(board[i][m-1])
                board[i][m-1] = 0
                break
        
        if len(answer) > 1:
            if answer[-2] == answer[-1]:
                answer = answer[:-2]
                counts += 2
    return counts

코드로 보면 매우 간단하다. 먼저, moves에서 인덱스 값을 받아온다. 해당 인덱스는 열을 나타내는 인덱스이기 때문에 행 기준으로 서칭해서 0이 아닌 숫자가 나올 때 이를 출력하고, 뽑힌 숫자를 0으로 변환하면 된다. 그런 다음에 바로 break를 해주어서 불필요한 연산을 하지 않는다. 그리고, answer에는 뽑힌 값을 넣어준다. answer의 길이가 2 이상인 경우에는 이전에 입력된 값과 비교해서 값이 같다면 2를 더해준다. 그리고, 일치된 값은 슬라이싱을 통해 제거해도 되고, pop를 사용해도 된다.