Python 알고리즘 - 2019 카카오 인형뽑기

Seunghwa's Devlog·2021년 2월 25일
0

<문제>
https://programmers.co.kr/learn/courses/30/lessons/64061?language=python

<풀이>

def solution(board, moves):
    answer = 0
    stack = [] # 바구니 생성
    for i in moves : # 몇번째 열을 뽑을 것인가
        for j in range(len(board)): # 맨위에 인형을 뽑아야 하므로 인형이 몇개가 들어가있는가 판단
            if board[j][i-1] != 0 : # 만약 인형이 들어가 있다면
                if len(stack) == 0 : # 바구니에 아무것도 없으면
                    stack.append(board[j][i-1]) # 넣는다
                    board[j][i-1] = 0 # 넣고 원래 board에 있던 값 0으로 변경
                elif stack[-1] == board[j][i-1] : # 다음 넣을 인형과 바구니에 있는 인형 비교 
                    board[j][i-1] = 0 # 같으면 board에 있던 값 0으로 변경
                    stack.pop() # 같으므로 바구니에 있던 인형 터트림
                    answer += 2 # 2개를 터트리므로 +2
                else: # 넣을 인형이 바구니 맨 위에 있는 인형과 다른 경우
                    stack.append(board[j][i-1]) # 넣는다
                    board[j][i-1] = 0 # 넣고 원래 board에 있던 값 0으로 변경
                break # 한번 뽑으면 break
    return answer
    

접근법이 생각나지 않아서 한참을 고민했다 알고리즘 공부가 많이 필요하다
1시간 반 소요

profile
에러와 부딪히고 새로운 것을 배우며 성장해가는 과정을 기록합니다!

0개의 댓글