생각과 고민이 담긴 코드

프로그래머스 - 크레인 인형뽑기 게임 (2019 카카오 개발자 겨울 인턴십) / Level 1 본문

Algorithm/프로그래머스

프로그래머스 - 크레인 인형뽑기 게임 (2019 카카오 개발자 겨울 인턴십) / Level 1

0_Hun 2022. 1. 16. 12:23

문제 : https://programmers.co.kr/learn/courses/30/lessons/64061

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

 

풀이

def solution(board, moves):
    answer = 0
    stack = []
    n = len(board)
    
    for move in moves:
        for i in range(n):
            item = board[i][move-1]  # 현재 집게가 가리키는 item.
            
            if item != 0:  # 집게가 인형에 도달했을 경우.
                board[i][move-1] = 0  # 인형을 뽑아주고
                
                if stack:  # 바구니에 이전에 담긴 인형이 있으면
                    ex_item = stack.pop()
                    if item == ex_item:  # 같은 종류 인형인지 비교.
                        answer += 2
                    else:  # 다르면 둘 다 순서대로 다시 넣어줌.
                        stack.extend([ex_item, item])
                else:
                    stack.append(item)
                break
    return answer

문제 설명이 길고 복잡해 보이지만 실상을 들여다보면 어렵지 않은 문제였다. 

문제에서 설명하는 게임 로직을 그대로 구현만 하면 된다.

유의할 점은 하나의 시도에서 인형을 뽑았으면 break문을 통해 다음 시도로 넘어가야 한다는 것이다.