쌓고 쌓다
[프로그래머스] 크레인 인형뽑기 게임 C++ 풀이 본문
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
전체 코드
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
stack<int> s;
for(int i=0;i<moves.size();i++) // moves 탐색
{
for(int j=0;j<board.size();j++) // N 크기만큼 탐색
{
if(board[j][moves[i]-1]!=0){ // moves 번호를 따와 격자 위에서부터 아래로 탐색
if(!s.empty()&&s.top()==board[j][moves[i]-1]) // 넣을 인형과 바구니 인형 동일
{
s.pop();
answer+=2;
}
else // 다르면 그냥 바구니에 담음
s.push(board[j][moves[i]-1]);
board[j][moves[i]-1]=0; // 뽑은 인형 자리는 0으로 채우기
break;
}
}
}
return answer;
}
바구니를 스택을 이용해 구현하고
크레인으로 뽑은 인형을 넣기 전 같은지 비교를 하여
1. 같으면 크레인으로 뽑은 인형과 바구니의 인형을 터트려 +=2 해줍니다.
이때 크레인으로 뽑은 인형은 바구니에 넣지 않습니다.
2. 크레인으로 뽑은 인형과 바구니의 맨 위 인형이 다르면 그냥 인형을 바구니에 넣습니다.
1, 2 과정 둘 다 크레인으로 뽑은 인형 자리는 0으로 채워줍니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 음양 더하기 C++ 풀이 (0) | 2022.06.27 |
---|---|
[프로그래머스] 없는 숫자 더하기 C++ 풀이 (0) | 2022.06.27 |
[프로그래머스] 키패드 누르기 C++ 풀이 (0) | 2022.06.27 |
[프로그래머스] 숫자 문자열과 영단어 C++ 풀이 (0) | 2022.06.25 |
[프로그래머스] 신규 아이디 추천 C++ 풀이 (0) | 2022.06.24 |
Comments