[프로그래머스] 크레인 인형뽑기 게임Lv.1
나의 풀이
def solution(board, moves):
bucket = []
answer = 0
moves = [i - 1 for i in moves]
for pick in moves:
if board[len(board) - 1][pick] == 0:
continue
row = 0
while board[row][pick] == 0:
row += 1
bucket.append(board[row][pick])
board[row][pick] = 0
if len(bucket) > 1:
if bucket[-1] == bucket[-2]:
bucket.pop(-1)
bucket.pop(-1)
answer += 2
return answer
- 인형을 담아 줄 버킷 리스트를 만들어준다.
- 계산을 편하게 하기 위해서 인형을 뽑을 번호는 -1을 해준다.
- 반복을 돌면서, 만약 인형을 뽑아야 할 열과 마지막 행의 값이 0이라면 해당 열에는 인형이 없다는 뜻이기 때문에, continue 를 해주었다.
- 0이 아니라면, 인형이 있는 행까지 행을 늘려준다.
- 인형이 있으면, 해당 행과 열의 값을 버킷에 넣어준다.
- 인형을 버킷에 넣고 연속해서 같은 인형이 있다면 제거를 해줘야 한다. 우선 버킷에 인형이 하나밖에 없다면 비교가 불가능하기 때문에, 버킷의 사이즈가 1 초과(2개부터) 하면서, 버킷의 마지막 인형과 바로 밑에 있는 인형이 같다면 제거하고 카운트를 2개 더해준다.