프로그래밍응용/오답노트

프로그래머스, 2019카카오겨울인턴십, 크레인 인형 뽑기 게임(C++)

photoner 2021. 2. 22. 23:30
728x90
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

모든 출저는 위임.

 

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

[[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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <string>
#include <vector>
#include <stack>
 
using namespace std;
 
int solution(vector<vector<int>> board, vector<int> moves) {
    int answer = 0;
    stack<int> stbasket; // 뽑은 인형을 담는 스택!
    
    for(auto c : moves) // 뽑을 라인!
        for(int r=0; r<board.size(); r++)
            if(board[r][c-1!= 0// 비어져있지 않은 [r][c] 칸이 나오면
            {
                if(!stbasket.empty() && stbasket.top() == board[r][c-1])
                { // 1. 스택에 인형이 있고 2. 스택 제일 위에 인형이 지금 넣으려고하는 인형과 같다면
                    stbasket.pop(); // 넣어봤자 터지므로 그냥 빼고
                    answer+=2// 터진 인형 두 개 증가.
                }
                else // 스택이 비었거나, 넣으려는 인형과 스택 제일 위의 인형이 같지 않다면
                    stbasket.push(board[r][c-1]); // 인형을 넣어준다.
                board[r][c-1= 0// 그리고 board에서 뽑은 인형 자리는 비워준다.
                break// c를 갱신한다.
            }
    return answer;
}
cs
728x90
반응형