문제
풀이
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int count = 0;
vector<int> box = {};
int num = 10;
for( int i=0; i<moves.size(); i++){
for(int j=0; j<board.size(); j++){
if(board[j][moves[i]-1] != 0){
num = moves[i]-1;
if(!box.empty() && box.back() == board[j][num]){
box.pop_back();
count+=2;
}
else box.push_back(board[j][num]);
board[j][num] = 0;
break;
}
}
}
return count; // 사라진 인형의 갯수
}
다른 사람 풀이
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
stack<int> s;
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)
{
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;
}
나는 바구니를 vector를 이용해 구현했지만, 이 코드는 stack을 이용했다.
인터넷에 검색해 본 결과 둘의 사용방법은 비슷했다.
하지만 vector는 배열로도 사용할 수 있기 때문에, stack을 사용하면 바구니의 기능을 예상할 수 있어 코드의 가독성이 더 좋았을 것이라고 생각한다.
https://www.acmicpc.net/board/view/8783
'Algorithm > 카카오기출' 카테고리의 다른 글
[프로그래머스]비밀지도 (0) | 2022.01.15 |
---|---|
[프로그래머스] 실패율 (0) | 2022.01.14 |
[프로그래머스] 키패드 누르기 (0) | 2022.01.11 |
[프로그래머스]숫자 문자열과 영단어 (0) | 2022.01.08 |
[프로그래머스]신규 아이디 추천 (0) | 2022.01.05 |