๐ฏ ๋ฌธ์ :
programmers.co.kr/learn/courses/30/lessons/64061
๐งฉ๋ถ์ :
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;
}
'Algorithm๐ฐ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] Summer/Winder coding ๋ฐฉ๋ฌธ ๊ธธ์ด level2 (0) | 2021.04.30 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ๊ฒ์ 2021 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ํ ์คํธ level2 (0) | 2021.04.28 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (0) | 2021.02.26 |
[ํ๋ก๊ทธ๋๋จธ์ค] 2016๋ basic (0) | 2021.02.24 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ์ค๋ ์ basic (0) | 2021.02.24 |
๋๊ธ