본문 바로가기
알고리즘/프로그래머스

[프로그래머스 64061] 크레인 인형뽑기 (C++)

by Bloofer 2021. 1. 24.

A. 문제설명

문제에 대한 자세한 설명은 링크 참조

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

1. N*N 크기의 배열이 존재

2. 크레인이 각 열을 이동하며 맨 위의 인형을 뽑는다. 없는경우, 아무 행동도 하지 않음

3. 인형을 뽑아, 바구니에 쌓았을 때 같은 인형 두개가 겹치는 경우 없어짐

4. 모든 명령을 받아 수행하고, 인형을 겹쳐 없어지는 갯수를 구하라

 

B. 접근법

스택을 이용하여 간단하게 풀 수 있는 문제, 나는 C++ 벡터로 쉽게 풀이하였다. 명령이 들어오는 대로 인형을 뽑아 바구니에 담고, 벡터의 back()에서 같은 게 두개 겹치면 빼주고 점수를 계산

 

C. 풀이

1. 열 번호를 받아 해당 열의 가장 윗칸의 인형을 반환하고 해당 칸을 비움, 없으면 -1 반환

2. 크레인의 위치에서의 인형을 찾고, 보드를 업데이트

3. 바구니가 비어있지 않으면서, 새로 뽑은 인형과 바구니 맨 위 인형이 같으면 POP

4. 그 외의 경우는 바구니에 뽑은 인형을 넣음

5. 최종적으로 계산한 점수를 반환

 

D. 내 코드