본문 바로가기
프로그래머스

[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임, C++

by 황인태(intaehwang) 2020. 5. 1.
반응형

https://programmers.co.kr/learn/courses/30/lessons/64061

 

프로그래머스

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

programmers.co.kr

본 문제는 시뮬레이션 문제로 stack을 이용하여 문제의 조건에 맞게 코딩하면 된다.

  1. 해당 칸이 0일 경우 continue;
  2. 0이 아닐 경우
  3. stack이 empty가 아닐 때, top과 값이 같으면 answer += 2, board = 0, break
  4. stack이 empty이거나 top과 다를 경우 push(), board = 0, break
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
27
28
29
#include <string>
#include <vector>
#include <stack>
 
using namespace std;
// board 30x30 이하
// 0 빈칸, 1~100 인형
int solution(vector<vector<int>> board, vector<int> moves) {
    int answer = 0;
    stack<int> st;
    for (int i = 0; i < moves.size(); i++) {
        for (int j = 0; j < board.size(); j++) {
            if (board[j][moves[i]-1== 0continue;
            else {
                if (!st.empty() && st.top() == board[j][moves[i]-1]) {
                    st.pop();
                    board[j][moves[i]-1= 0;
                    answer += 2;
                }
                else {
                    st.push(board[j][moves[i]-1]);
                    board[j][moves[i]-1= 0;
                }
                break;
            }
        }
    }
    return answer;
}
cs

 

2020-05-08 추가+)

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
27
28
29
30
31
32
33
#include <string>
#include <vector>
#include <stack>
 
using namespace std;
 
int answer = 0;
stack<int> s;
 
void cal(int x) {
    if (!s.empty()) {
        if (s.top() == x) {
            s.pop();
            answer += 2;
        }
        else s.push(x);
    }
    else s.push(x);
}
 
int solution(vector<vector<int>> board, vector<int> moves) {
    
    for (int j = 0; j < moves.size(); j++) {
        for (int i = 0; i < board.size(); i++) {
            if (board[i][moves[j]-1!= 0) {
                cal(board[i][moves[j]-1]);
                board[i][moves[j]-1= 0;
                break;
            }
        }
    }
    return answer;
}
cs
반응형
Buy me a coffeeBuy me a coffee

댓글