본문 바로가기
👩🏻‍💻 Front-end/👾 Algorithm

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

by su-no 2022. 6. 6.

문제

출처: programmers.co.kr/learn/courses/30/lessons/64061#

 

코드

def solution(board, moves):
    answer = 0
    stacklist = []
    
    for i in moves:
        for j in range(len(board)):
            if board[j][i-1] != 0: #1
                if stacklist and stacklist[-1] == board[j][i-1]: #2
                    stacklist.pop(-1)
                    answer += 2
                else:
                    stacklist.append(board[j][i-1]) #3
                board[j][i-1] = 0 #4
                break
        
    return answer

 

풀이

#1: move 칸의 위쪽부터 돌아가며 값이 0이 아닐 경우 (인형이 존재할 경우)를 확인한다.

#2: 만약 stacklist에 원소가 존재하고, 마지막 원소가 현재 값과 동일할 경우 (같은 인형일 경우)

      stacklist의 마지막 원소를 제거하고, 2개의 인형이 만나 사라졌으므로 answer에 2를 더해준다.

#3: 그렇지 않을 경우, stacklist에 현재 값을 추가한다.

#4: 인형을 뽑은 좌표의 값을 0으로 변경한다. 같은 x 좌표에서는 인형을 한 번만 뽑아야 하므로, 반복문을 탈출하고 다음 move로 넘어간다.