관리 메뉴

공부 기록

[프로그래머스] 2019 KAKAO - 크레인 인형뽑기 게임 본문

코딩테스트/[PG] 문제 풀이

[프로그래머스] 2019 KAKAO - 크레인 인형뽑기 게임

_JAEJAE_ 2021. 9. 3. 18:51

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
Comments