공부 기록
[프로그래머스] 2019 KAKAO - 크레인 인형뽑기 게임 본문
https://programmers.co.kr/learn/courses/30/lessons/64061?language=python3
코딩테스트 연습 - 크레인 인형뽑기 게임
[[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
[풀이 과정]
1. moves에서 인덱스 값을 하나씩 가져와서 해당 열의 0~N-1을 탐색한다. (idx-1을 한 이유는 board에서 값을 가져올 때 인덱스가 (0, 0)부터이기 때문)
2. 해당 열에서 값이 있는 칸을 찾았을 땐 두 가지 경우로 나눌 수 있다.
- 현재 stack에 인형이 있고 stack의 제일 위 인형과 현재 찾은 인형이 같은 인형이라면 stack에서 윗 값을 pop하고 board에서 현재 인형의 위치도 0으로 바꾼 후 answer에 인형의 갯수 2개를 추가하고 해당 열의 탐색을 멈춘다.
- 현재 stack이 비어있거나 stack의 제일 위 인형과 현재 찾은 인형이 같지 않을 땐 stack에 현재 인형을 추가하고 board를 0으로 바꾼 후 해당 열의 탐색을 멈춘다.
3. moves의 모든 값을 탐색 한 후에는 answer를 return 한다.
[소스 코드]
def solution(board, moves):
answer = 0
stack = []
for idx in moves:
for row in range(len(board)):
if board[row][idx-1]:
if len(stack) >= 1 and stack[-1] == board[row][idx-1]:
stack.pop(-1)
board[row][idx-1] = 0
answer += 2
break
else:
stack.append(board[row][idx-1])
board[row][idx-1] = 0
break
return answer
'코딩테스트 > [PG] 문제 풀이' 카테고리의 다른 글
[프로그래머스] 2019 KAKAO - 실패율 (0) | 2021.09.03 |
---|---|
[프로그래머스] 2018 KAKAO - 다트 게임 (0) | 2021.09.03 |
[프로그래머스] 2020 KAKAO - 키패드 누르기 (0) | 2021.09.03 |
[프로그래머스] 2021 KAKAO - 숫자 문자열과 영단어 (0) | 2021.09.03 |
[프로그래머스] 2019 KAKAO - 튜플 (0) | 2021.08.24 |
Comments