개발공부/algorithm

[프로그래머스][python] 크레인 인형 뽑기 - Stack

so.py 2021. 5. 24. 19:37

문제

  • 프로그래머스: 크레인 인형 뽑기
  • Level1
  • Link
 

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

[[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

 

나의 코드

Stack의 선입선출 특성을 잘 사용하면 쉽게 풀리는 문제다.
1. 각 칸에서의 가장 상위의 원소를 뽑아 바구니에 담아준다.
2. 이 때 바구니에 같은 종류의 원소가 가장 위에 담겨있다면, pop해주고 count를 2 더해준다.
3. 다른 종류의 원소라면 쌓아준다.
4. 한 칸에서의 인형을 바구니에 옮겨줬다면 해당 칸에서의 탐색은 종료해준다.
5. Move의 모든 배열에 대해서 탐색을 종료하고 count를 리턴한다.

def solution(board, moves):
    answer = []
    cnt = 0
    for i in moves:
        for k in range(len(board)):
            if board[k][i - 1] != 0:
                if answer:
                    if board[k][i - 1] == answer[-1]:
                        answer.pop(-1)
                        board[k][i - 1] = 0
                        cnt += 2
                    else:
                        answer.append(board[k][i - 1])
                        board[k][i - 1] = 0
                    break
                else:
                    answer.append(board[k][i - 1])
                    board[k][i - 1] = 0
                    break
            
    return cnt