프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
#include <string>
#include <vector>
#include <iostream>
#include <stack>
using namespace std;
// 데이터 정제 않고 그대로 board를 활용
// moves의 원소들은 board의 열.
// 이중 for 이용
// moves 원소 접근하여 인덱스의 값을 board의 열(board[m]-1)로 활용한다.
// board의 열의 값에 0이 아닌 값을 찾는다.
// 0이 아닌 값을 stack에 넣기 전에 stack에 사이즈가 0이면 넣고
// 사이즈가 0이 아니며, st에 top 값과 해당 board의 열의 값이 같으면
// st에 top을 pop 한다. counting +=2 를 진행. (1-1)
// st에 top과 값이 다르면 st에 board 값을 넣는다. (1-2)
// board의 해당 열의 값을 0으로 만든다. (2)
// 0이면 아무 로직도 없다.
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
stack<int> st;
for(int m = 0; m < moves.size(); ++m){
for(int b = 0; b< board.size(); ++b){
if(board[b][moves[m]-1] !=0)
{
if(st.size()==0){
st.push(board[b][moves[m]-1]);
}
else{
if(st.top() == board[b][moves[m]-1]){
answer+=2;
st.pop();
}
else{
st.push(board[b][moves[m]-1]);
}
}
board[b][moves[m]-1] = 0;
break;
}
}
}
return answer;
}'코딩테스트' 카테고리의 다른 글
| 피라미드 별찍기(파이썬으로 해보기) (0) | 2022.10.11 |
|---|
