본문 바로가기

ETC

[LV1] 크레인 인형뽑기 Python

반응형

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

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[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

move의 m은 컬럼의 좌표다.

def solution(board, moves):
    # 인형을 담을 스택
    stack = []
    answer = 0
    # 1. move 안의 좌표를 check한다.
    for m in moves:
        pick = 0
        # 2. board를 위에서부터 한 "행씩" 하나씩 체크한다.
        for r in board:
            # 3. move 안의 좌표는 열을 나타낸다. 0이 아니면 인형이 있는 것이므로 선택한다.
            if r[m - 1] != 0:
                pick = r[m - 1]
                r[m - 1] = 0
                break
        # 4. 인형이 없으면 다른 좌표로 이동한다.
        if pick == 0: continue
        # 5. 맨 꼭대기가 같은 인형이면 그 인형을 빼주고, 없어진 것은 2개니 answer에 2를 더한다.
        if stack and stack[-1] == pick:
            stack.pop()
            answer += 2
        # 6. 스택이 비어있거나 같은 인형이 아니면 제거할 수 없으니 스택에 추가한다.
        else:
            stack.append(pick)

    return answer

 

반응형