반응형
https://programmers.co.kr/learn/courses/30/lessons/64061
본 문제는 시뮬레이션 문제로 stack을 이용하여 문제의 조건에 맞게 코딩하면 된다.
- 해당 칸이 0일 경우 continue;
- 0이 아닐 경우
- stack이 empty가 아닐 때, top과 값이 같으면 answer += 2, board = 0, break
- 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] == 0) continue;
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 |
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 불량 사용자, C++ (0) | 2020.05.05 |
---|---|
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 튜플, C++ (0) | 2020.05.01 |
[프로그래머스] level 3 - 단어 변환 (0) | 2020.03.27 |
[프로그래머스] level 3 - 보행자 천국, C++ (0) | 2020.03.26 |
[프로그래머스] level 3 - 여행경로, C++ (0) | 2020.03.26 |
댓글