컴공 일기267
게시글 주소: https://orbi.kr/00071465085
https://school.programmers.co.kr/learn/courses/30/lessons/64061
오늘도 프로그래머스 스택 문항..
카카오 19 인턴쉽 문항이네요. 아마 코테쯤 되려나요?
사실 스택 문제는 스택을 이용해야 한다는 사실을 자각하면 어렵진 않습니다.
복병은, 이 문제가 스택 문제라는 사실을 자각하지 못하는 것에 있죠.
문제에서는 대놓고… ‘차곡차곡’이라든가, ‘쌓는다’라든가, ‘사라진다’는 표현을 해줬으므로..
stack을 이용해서 풀면 되겠다는 확신이 들죠. 그래서인지, 구현의 복잡성은 나름 있음에도 lv이 1로
잡힌 것이 아닌가 하구요.
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves)
{
int row = board.size();
vector<stack<int>> st(row+1); //moves의 인덱스 1부터 이용하므로 1-based index
for(int i=0; i<row; i++)
{
for(int j=row-1; j>=0; j--)
{
//0이 아니라면 인형이므로 스택에 담는다.
if(board[j][i] != 0)
{
st[i+1].push(board[j][i]);
}
}
}
stack<int> basket;
int remove = 0;
for(int num : moves)
{
//번호에 해당하는 스택이 비어 있지 않으면
if(!st[num].empty())
{
//인형을 꺼낸다.
int toy = st[num].top();
st[num].pop();
//꺼낸 인형과 바구니 스택의 top에 위치한 인형이 같으면
if(!basket.empty() && toy == basket.top())
{
//바구니에서 그 인형을 꺼내고, 삭제한다. 두 인형을 지운 셈이므로 remove엔 2를 더한다.
basket.pop();
remove += 2;
}
//꺼낸 인형과 바구니 스택의 top에 위치한 인형이 다르면 그냥 바구니에 인형을 push 한다.
else
{
basket.push(toy);
}
}
}
return remove;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
기프티콘 1 0
으흐흐
-
'尹 직무 복귀' 주장 전한길 "트럼프·윤석열 공동 노벨평화상 받아야 한다" 1 2
윤석열 대통령의 비상계엄 등을 옹호해 논란이 된 한국사 강사 전한길 씨가 자신의...
-
낮4도 아니고 중~높4인데 이정도면 개념만 돌린것 치고는 잘하는 건가요? 기출은...
-
天上太阳红彤彤唉 1 0
心中的太阳是毛泽东唉 他领导我们得解放唉 人民反身当家做主人
-
시대 인문 1 0
안좋다고 듣긴 했는데 그래도 가서 해봐야지..
-
러셀모 빌보드에 들고싶군아 5 0
수학 96인데 어케 안될라나
-
독서실에서 졸릴때 6 0
지금 독서실에 저 외엔 아무도 없는데요 그래도 누군가 올 수도 있어서 함부로 못...
-
시대 선착전형 납부함? 1 0
지원됐다 뜨는데 어디로 입금 해야하는지는 안나오네? 어디로 보내야하는거임?
-
라면 1 0
신라면: 계란, 표고 진라면: 계란 너구리: 그대로 감자면: 그대로 참깨라면: 계란...
-
인스타 본계 4 0
어제 새벽에 털림 링크 공유했는데 아이디가 나오더라
-
아퀴나스의 인식론 졸라 어렵네 0 0
지문 보면서 턱턱 막히는 거 오랜만이다 심지어 인문인데 ㅋㅋㅋ
-
헤으으으ㅡ응 이게 야스지 6 0
첫번째 댓글의 주인공이 되어보세요.