2차원 배열 board와 1차원 배열 moves가 주어진다.
board는 사진과 같이 인형(정수)가 들어가 있는 형태이고, moves는 뽑는 위치이다.
뽑기는 위에서 아래로 내려가므로 위에서부터 뽑아내며, 아무것도 없는 칸일 경우 어떤 것도 뽑지 못한다.
그리고 뽑은 인형들을 쌓아두는 박스가 옆에 있는데 같은 가장 최근의 인형과 지금 들어오는 인형이 같은 인형이라면 삭제된다.
(삭제되는 경우)
이때 삭제되는 인형의 개수를 구해라.
def solution(board, moves):
answer = 0
arr = []
for move in moves:
for i in range(len(board)):
if board[i][move-1] != 0:
if len(arr) == 0:
arr.append(board[i][move-1])
board[i][move-1] = 0
break
if arr[-1] != board[i][move-1]:
arr.append(board[i][move-1])
board[i][move-1] = 0
break
else:
arr.pop()
board[i][move-1] = 0
answer+=2
break
return answer
추가로 찾아보았지만 딱히 큰 차이가 있는 것 같진 않았다.
deque가 좀 더 빨랐지만 왠만한 알고리즘에서 큰 차이는 없을 것 같다.