코딩테스트

[프로그래머스][KAKAO_인턴][2020] 크레인 인형뽑기 게임

pythaac 2021. 9. 8. 04:16
프로그래머스 코딩테스트 고득점 Kit의 문제입니다.

https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

문제

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

 

내가 작성한 코드

from collections import deque

def solution(board, moves):
    answer = 0
    dolls = []
    for c in range(len(board)):
        q = deque()
        for r in range(len(board[0])):
            if board[r][c] > 0:
                q.append(board[r][c])
        dolls.append(q)

    stk = []
    for col in moves:
        if dolls[col-1]:
            doll = dolls[col-1].popleft()
            if stk and stk[-1] == doll:
                stk.pop()
                answer += 2
            else:
                stk.append(doll)

    return answer
  • Queue
    • 모든 column을 queue로 변경
    • 선택된 column이 empty가 아닐 경우만 pop
    • pop한 element는 stack으로 push
  • Stack
    • 요소가 push될 때마다 마지막 요소와 비교
    • 인형이 터지는 경우, 마지막 인형을 pop하고 인형 개수 추가

 

다른 사람이 작성한 코드

None

 

기억해야할 것

  • 큐와 스택을 이용하여 간단히 풀 수 있다