문제
출처: programmers.co.kr/learn/courses/30/lessons/64061#
코드
def solution(board, moves):
answer = 0
stacklist = []
for i in moves:
for j in range(len(board)):
if board[j][i-1] != 0: #1
if stacklist and stacklist[-1] == board[j][i-1]: #2
stacklist.pop(-1)
answer += 2
else:
stacklist.append(board[j][i-1]) #3
board[j][i-1] = 0 #4
break
return answer
풀이
#1: move 칸의 위쪽부터 돌아가며 값이 0이 아닐 경우 (인형이 존재할 경우)를 확인한다.
#2: 만약 stacklist에 원소가 존재하고, 마지막 원소가 현재 값과 동일할 경우 (같은 인형일 경우)
stacklist의 마지막 원소를 제거하고, 2개의 인형이 만나 사라졌으므로 answer에 2를 더해준다.
#3: 그렇지 않을 경우, stacklist에 현재 값을 추가한다.
#4: 인형을 뽑은 좌표의 값을 0으로 변경한다. 같은 x 좌표에서는 인형을 한 번만 뽑아야 하므로, 반복문을 탈출하고 다음 move로 넘어간다.
'👩🏻💻 Front-end > 👾 Algorithm' 카테고리의 다른 글
프로그래머스 - 체육복 (Python) (0) | 2022.06.08 |
---|---|
프로그래머스 - 음양더하기 (Python) (0) | 2022.06.07 |
프로그래머스 - 키패드 누르기 (Python) (0) | 2022.06.06 |
프로그래머스 - 숫자 문자열과 영단어 (Python) (0) | 2022.06.06 |
프로그래머스 - 신규 아이디 추천 (Python) (0) | 2022.06.06 |