[프로그래머스] 크레인 인형뽑기 게임 / Python / 스택(Stack)
크레인 인형뽑기 게임
-
문제
게임 화면의 격자의 상태가 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요. 같은 모양의 인형 두 개가 바구니에 연속해서 쌓이게 되면 두 인형은 터뜨려지면서 바구니에서 사라지게 됩니다. -
제한사항
- board 배열은 2차원 배열로 크기는 "5 x 5" 이상 "30 x 30" 이하입니다.
- board의 각 칸에는 0 이상 100 이하인 정수가 담겨있습니다.
- 0은 빈 칸을 나타냅니다.
- 1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미하며 같은 숫자는 같은 모양의 인형을 나타냅니다.
- moves 배열의 크기는 1 이상 1,000 이하입니다.
- moves 배열 각 원소들의 값은 1 이상이며 board 배열의 가로 크기 이하인 자연수입니다.
나의 풀이
- 스택 개념
- len(dolls) 할 필요 없이 애초에 0을 dolls에 넣어놓고 시작하는 방법도 있다.
def solution(board, moves):
dolls = []
answer = 0
for m in moves:
i = 0
while i < len(board):
if board[i][m - 1] != 0: # 인형을 잡음
picked = board[i][m - 1]
# 바구니에 인형이 1개 이상이고 현재 잡은 인형과 같은 인형이 맨 위에 있으면
if len(dolls) >= 1 and picked == dolls[-1]:
answer += 2
dolls = dolls[:-1] # 맨 위에 있는 인형 제외
else:
dolls.append(picked)
board[i][m - 1] = 0
break
i += 1
return answer
Author And Source
이 문제에 관하여([프로그래머스] 크레인 인형뽑기 게임 / Python / 스택(Stack)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dhelee/프로그래머스-크레인-인형뽑기-게임-Python-스택Stack저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)