728x90
반응형
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/64061
풀이:
def solution(board, moves):
stack = []
res = 0
for i in moves:
for j in range(len(board)):
# 열 비교
if board[j][i-1] != 0: # 뽑는수가 0 이 아닐때
stack.append(board[j][i-1]) # 뽑은 숫자 스택에 넣고
print(board)
board[j][i-1] = 0 # 뽑은수 0 으로 바꿔줌
if len(stack) > 1:
if stack[-1] == stack[-2]:
stack.pop(-1)
stack.pop(-1) # -2 면 안됨
res += 2
break
return res
print(solution([[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] ))
# result = 4
# 맨 뒤가 맨 아래층
문제 이해하는데 좀 걸렸다.
처음에는 pop을 사용해서 숫자를 넣고 del로 없애려 했는데 원하는 값이 나는 pop이 안된다..
1 . 이동시키는 곳 찾아서 0이 아닌것 까지 찾아서 뽑음
2. 스택에 넣고 뽑은 숫자 0 으로 (del 로 삭제시키려다가 실패)
3. 넣으면서 stack 공간에 연속된 숫자인지 확인 > 맞으면 res += 2
반응형
댓글