개발공부/algorithm
[프로그래머스][python] 크레인 인형 뽑기 - Stack
so.py
2021. 5. 24. 19:37
문제
- 프로그래머스: 크레인 인형 뽑기
- Level1
- Link
코딩테스트 연습 - 크레인 인형뽑기 게임
[[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] 4
programmers.co.kr
나의 코드
Stack의 선입선출 특성을 잘 사용하면 쉽게 풀리는 문제다.
1. 각 칸에서의 가장 상위의 원소를 뽑아 바구니에 담아준다.
2. 이 때 바구니에 같은 종류의 원소가 가장 위에 담겨있다면, pop해주고 count를 2 더해준다.
3. 다른 종류의 원소라면 쌓아준다.
4. 한 칸에서의 인형을 바구니에 옮겨줬다면 해당 칸에서의 탐색은 종료해준다.
5. Move의 모든 배열에 대해서 탐색을 종료하고 count를 리턴한다.
def solution(board, moves):
answer = []
cnt = 0
for i in moves:
for k in range(len(board)):
if board[k][i - 1] != 0:
if answer:
if board[k][i - 1] == answer[-1]:
answer.pop(-1)
board[k][i - 1] = 0
cnt += 2
else:
answer.append(board[k][i - 1])
board[k][i - 1] = 0
break
else:
answer.append(board[k][i - 1])
board[k][i - 1] = 0
break
return cnt