반응형
https://programmers.co.kr/learn/courses/30/lessons/64061
먼저 각 열에서의 인형 갯수를 전처리해준 뒤, 각 열의 인형을 스택에 담아주었습니다.
만약 현재 담는 인형과 스택의 탑에 있는 인형이 같으면 2점씩 올려주었습니다.
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0, N = board.size();
stack<int> basket;
vector<int> board_len;
for(int i=0; i<N; i++) {
int len = 0;
for(int j=N-1; j>=0 && board[j][i] != 0; j--) {
len++;
}
board_len.push_back(len);
}
for(int i=0; i<moves.size(); i++) {
int move = moves[i] - 1;
if(board_len[move] <= 0) continue;
int idx = N - (--board_len[move]) - 1;
int doll = board[idx][move];
if(!basket.empty() && doll == basket.top()) {
basket.pop();
answer+=2;
} else {
basket.push(doll);
}
}
return answer;
}
반응형
'Algorithm' 카테고리의 다른 글
프로그래머스 : 네트워크 (0) | 2021.11.13 |
---|---|
프로그래머스 : 가사 검색 (0) | 2021.11.13 |
백준 10282 : 해킹 (0) | 2021.11.13 |
백준 2638 : 치즈 (0) | 2021.11.13 |
백준 4485 : 녹색 옷 입은 애가 젤다지? (0) | 2021.11.13 |