문제
- 프로그래머스: 크레인 인형 뽑기
- Level1
- Link
나의 코드
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
'개발공부 > algorithm' 카테고리의 다른 글
[백준][Python] 2670: 연속부분 최대합 - DP (0) | 2021.06.06 |
---|---|
[프로그래머스][python] 소수찾기 (0) | 2021.06.06 |
[프로그래머스][python] 정수삼각형 - DP (0) | 2021.05.20 |
[프로그래머스][python] 괄호 변환 - Stack, Recursion (0) | 2021.05.18 |
[프로그래머스][python] 타겟넘버 - DFS/BruteForce (0) | 2021.05.18 |