프로그래머스는 문제 설명이 참 친절한 것 같다!
귀여운 그림이 담긴 문제를 먼저 보자.
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/64061
이차원 배열과 스택을 이용하여 푸는 문제이다. 눈으로만 훑어보기에는 헷갈리기 때문에 그림을 그려가며 코드를 구현했다.
def solution(board, moves):
machine = []
answer = 0
for i in moves : # moves = [1,5,3,5,1,2,1,4]
for j in range(len(board)): # [0,1,2,3,4]
if board[j][i-1] != 0 : # 인덱스 값을 하기 위해 -1
machine.append(board[j][i-1])
board[j][i-1] = 0 # 0이 아니면 인형을 뽑은 다음 뽑은 것은 0으로 처리
break # 한번만 해주기 위해
else :
continue # 0이면 반복문 처음으로 돌아가서 다음 탐색
if len(machine) > 1 and machine[-1] == machine[-2] :
machine = machine[:len(machine)-2] #2개 이상이며 끝의 인형 2개가 같으면 사라져야한다.
answer += 2
return answer # 사라진 인형은 2개씩이므로
처음에 상하 / 좌우 때문에 i,j가 헷갈렸다. 차근차근 그림을 그리며 이해하다보니 쉬워졌다.