파이썬 알고리즘 : 크레인 인형뽑기 게임

스택

2024년 2월 26일 알고리즘 문제풀이

문제

난이도

Lv.1

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def solution(board, moves):
    n = len(board)
    stk = []
    answer = 0

    # 열에서 가장 위에 있는 인형을 찾는 함수
    # 찾으면 board에서 0으로 바꾸고 반환    
    def first_target(row):
        for i in range(n):
            if board[i][row]:
                result = board[i][row]
                board[i][row] = 0
                break        
        else:
            result = False
        return result
    
    # 인형이 있을 때, 이미 들어있는 인형과 동일하면 2개 제거, 아니면 추가
    for x in moves:
        row = x-1
        tmp = first_target(row)
        if tmp:
            if stk:
                if stk[-1] == tmp:
                    stk.pop()
                    answer += 2
                    continue
            stk.append(tmp)
        
    return answer