Algorithm (PS)

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

minjiwoo 2022. 2. 3. 19:48
728x90

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

 

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

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

 

난이도 : 하 

유형 : 시뮬레이션

문제에서 하라는 대로 해주면 된다.

배열의 가장 마지막 원소와 크레인이 집어 올린 원소와 같으면 배열의 마지막 원소를 pop 시킨다. 

그리고 결과값에 2개를 더해준다.

단 주의할 점은 원소를 빼낸 후에 break 문을 걸어야 안쪽의 for 문 순회에서 벗어날 수 있다. !!! (크레인 처리 이후에 바로 다음 move를 수행하기 위해서이다. )

 

def solution(board, moves):
    stack = []
    answer = 0
    n = len(board) 
    for i in moves: # i- 1 해야함 index 로 쓰려면 
        for j in range(n):
            if board[j][i-1] > 0:
                if len(stack) == 0:
                    stack.append(board[j][i-1])
                    board[j][i-1] = 0 
                    break 
                else:
                    now = board[j][i-1]
                    board[j][i-1] = 0 
                    if stack[-1] == now:
                        stack.pop()
                        answer += 2 
                        break 
                    else:
                        stack.append(now)
                        break 
                        
    return answer
728x90