본문 바로가기
개인 공부/알고리즘 트레이닝

[python] programmers - 크레인 인형뽑기 게임

by 아메리카노와떡볶이 2022. 9. 5.
728x90
programmers - 크레인 인형뽑기 게임

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

 

프로그래머스

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

programmers.co.kr

문제의 자세한 설명은 위의 링크를 참조해주세요.

 

문제설명

그림처럼 2차원 배열로 인형뽑기판이 주어지면, 주어진 입력에 따라 인형을 뽑아서 오른쪽 바구니에 인형을 쌓게 됩니다.

이때 바구니에 같은 종류의 인형이 쌓이게 되면 터지게 되고, 터진 인형의 수를 구하면 되는 문제입니다.

 

문제풀이

 오른쪽 바구니의 그림을 보고 스택 자료구조를 떠올릴 수 있습니다. 2차원 배열에서 moves 배열을 순회하면서 인형을 뽑아 스택에 넣고, 스택에 최상단 2개 인형 종류가 같으면 pop 을 통해 터트리면 됩니다.

 

사실 바구니를 보고 스택 을 떠올렸다면 더 고민할 여지가 없는 문제이므로 바로 코드를 작성해보겠습니다.

 

풀이코드

def solution(board, moves):
    stack = []
    n = len(board)
    answer = 0
    
    for move in moves:
        for i in range(0,n):
            if board[i][move-1] != 0:
                stack.append(board[i][move-1])
                board[i][move-1] = 0
                break
                
        while len(stack) >=2 and stack[len(stack)-1] == stack[len(stack)-2]:
            answer += 2
            stack.pop()
            stack.pop()
    return answer

728x90

댓글