[ํ๋ก๊ทธ๋๋จธ์ค] ํฌ๋ ์ธ ์ธํ ๋ฝ๊ธฐ 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ฝ
๐ฏ ๋ฌธ์ :
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
๐งฉ๋ถ์ :
2๋ ์ ์ ๋ง๋ฌ๋ ๋ฌธ์ ..!
์ง๊ธ์ ์ฝ๋ ์ดํด๊ฐ ๋คํ์ด ๋์๋ค. ์ฝ๊ฐ์ ๋ธ๋ก๊ทธ๋ค์ ์ฐธ๊ณ ํ์ง๋ง
2์ฐจ์ board = vector<vector<int>> board
ํฌ๋ ์ธ์ ์์ง์ = vector<int> moves
1. ํฌ๋ ์ธ์ ์์ง์์ด ๋๋ ๋ ๊น์ง check ํ ์ธ๋ฑ์ค๋ฅผ -1ํ์ฌ ์ ๊ทผ
2. borad์ ํ ํ์ฉ ๊ฒ์ฌํ๋ฉด์ ์์ง์ผ ์ด(check ์ธ๋ฑ์ค ๊ฐ)์ด ๋น์นธ(0)์ด ์๋๋ฉด
stack์ ์์ธ ๊ฐ์ด ์์ผ๋ฉด push
stack์ ์์๋๋ฐ ๊ฐ์ด ๊ฐ์ง ์์๋ push
stack์ ์์๋๋ฐ ๋ฐ๋ก ์์ ๊ฐ์ด ๊ฒ์ฌํ ๋ฐฐ์ด์ ๊ฐ๊ณผ ๊ฐ์ผ๋ฉด pop, ans += 2
๋ฐฐ์ด์ ํ ๋ค ๋๋ฉด break ๋ฌธ ํตํด ๋น ์ ธ ๋์จ๋ค.
๐ฎ c++ ์ฝ๋ :
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
stack<int> s;
//moves๋ ์์ง์ผ ์ด
for(int i = 0; i < moves.size(); i++){
int check = moves[i] - 1;
for(int j =0; j < board.size(); j++){
if(board[j][check] !=0){
//s์๋ ๋ด๊ฒจ ํฐํธ๋ฆด ๊ฒ ์์ผ๋ฏ๋ก
if(!s.empty() && s.top() == board[j][check]){
s.pop();
answer += 2;
}else{
s.push(board[j][check]);
}
board[j][check] = 0;
break;
}
}
}
return answer;
}