본문 바로가기

알고리즘/프로그래머스

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

728x90

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

 

프로그래머스

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

programmers.co.kr

 

🤔 문제분석

스택자료구조를 활용하여 해결하였습니다.

  1. 주어진 보드를 문제에서 주어진 그림과 같이 스택 자료구조로 변환한다.
  2. 원하는 위치에가서 뽑아서 바구니에 집어넣는다.
  3. 바구니의 마지막 부분에 같은 인형이 온다면 인형을 제거시켜준다.

💻 코드

def solution(board, moves):
    bag = []
    
    n = len(board)
    new_board = [[] for _ in range(n)]
    
    for j in range(n):
        for i in range(n-1, -1, -1):
            if board[i][j]:
                new_board[j].append(board[i][j])
    
    answer = 0
    
    for d in moves:
        d -= 1
        if new_board[d]:
            doll = new_board[d].pop()
            
            if bag and bag[-1] == doll:
                bag.pop()
                answer += 2
            else:
                bag.append(doll)
    
    return answer
728x90