Algorithm/Programmers

[Programmers] Lv1. 크레인 인형뽑기 게임

by somida 2021. 5. 14.

문제

바로가기

 

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

[[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을 이용해서 풀었다
  • moves의 배열을 돌면서 board의 열을 moves원소의 -1로 두고, 행을 board의 길이만큼 돌면서 인형을 찾습니다
  • 그리고 인형을 발견하면 stack에 인형을 쌓고 해당 board의 값을 0으로 만들고 break
  • 그 후 stack의 길이가 1 이상이 되면 같은 인형이 나올 수 있으므로 while문을 stack의 길이가 1 이상일 때로 지정
  • stack의 마지막 원소와 뒤에서 두 번째 원소가 같은 경우, answer에 없어진 인형의 개수(2)를 더하고 stack을 조절

 

코드

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

 

반응형

댓글