2019 카카오 개발자 겨울 인턴십
https://programmers.co.kr/learn/courses/30/lessons/64061
우선 board 배열을 재정렬 하기 위한 new_board(1열을 1행으로)를 선언하였다
그리고 moves만큼 for문을 돌며 차례차례 new_board를 방문해주었고,
뽑은 인형(doll)과 stack[-1]이 일치한다면 stack[-1]을 pop해주고 사라진 인형 개수(+2)를 더해주었다
stack이 비어있거나 뽑은 인형과 stack[-1]이 불일치했을 경우, stack에 인형을 넣어주었다
개인적으로 좋은 풀이라고는 생각하지 않는다...
소스코드
def solution(board, moves):
answer = 0
new_board = [[] for _ in range(len(board))]
stack = []
for j in range(len(board)):
for i in range(len(board)):
if board[i][j] != 0:
new_board[j].append(board[i][j])
for m in moves:
if len(new_board[m-1]) == 0: continue
doll = new_board[m-1].pop(0)
if len(stack) > 0 and doll == stack[-1]:
stack.pop()
answer += 2
else:
stack.append(doll)
return answer
def solution(board, moves):
stacklist = []
answer = 0
for i in moves:
for j in range(len(board)):
if board[j][i-1] != 0:
stacklist.append(board[j][i-1])
board[j][i-1] = 0
if len(stacklist) > 1:
if stacklist[-1] == stacklist[-2]:
stacklist.pop(-1)
stacklist.pop(-1)
answer += 2
break
return answer