[프로그래머스(Lv 1)/파이썬] 크레인 인형뽑기 게임

jwKim·2023년 11월 2일
0

💻코테코테

목록 보기
40/42

📌 문제

https://school.programmers.co.kr/learn/courses/30/lessons/64061

📌 풀이

코드

def solution(board, moves):
    answer = 0
    stack = list()
    
    # 가로 기준으로 되어있는 칸 정보를 세로 기준으로 바꾸기
    new_board = list()
    for i in range(len(board)) :
        temp = list()
        for j in range(len(board)) :
            temp.append(board[j][i])
        new_board.append(temp)
    
    # moves를 돌면서 인형 빼기 - moves에서 1씩 뺀 후에 인덱싱(인덱스는 0부터니까)
    for m in moves :
        for i in range(len(board)) : # 칸 개수만큼 반복
            if new_board[m-1][i] != 0 : # 인형이 있는 칸이라면
                stack.append(new_board[m-1][i]) # 그 인형을 stack에 담고
                new_board[m-1][i] = 0 # 인형 판에서는 삭제
                
                # 맨 뒤 두 인형이 같은 인형이라면 빼주기
                if len(stack) > 1 and stack[-1] == stack[-2] : 
                    stack.pop()
                    stack.pop()
                    answer += 2
                break
    
    return answer

설명

예제에서 든 예시를 그려보면 아래와 같다.

그런데 입력값으로 열 정보를 주고 있으므로 인덱싱해서 사용하기 위해 위 행렬을 전치해준다. 그러면 아래와 같은 행렬로 바뀐다.

이제 인덱싱을 사용할 수 있으므로 제시된 열에서 가장 마지막 숫자가 0이 아닌 경우에 빼서 stack에 넣는 방법으로 구현한다.

0개의 댓글