컴공 일기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를 선물하세요.
-
문디컬 목표면 19 1
사탐 표점이 많이 중요한가요 ? 경희한, 가천한, 이화의 .. 사문 + ???...
-
옯만추하면 부엉이랑 6 0
으흐흐 벌써부터 아랫도리가 두@근거리구나
-
수능 끝나면 물리공부 할거임 10 3
마음속 고향으로 귀향할거야...
-
적당히 부엉이햄정도로 써주면 될라나 나머지는 설명으로 돌리고
-
현우진 사용설명서 구함 8 0
인강 첨 듣고 독학으로 수학 했는데 내 나름대로 뉴런 시냅스 사용법을 일단 뉴런...
-
8시 기상이면 뭐 3 0
5시 쯤 자면 되겟구만 ㅎㅎ
-
노력하는 n수생 실패원인에 대하여.. 11 7
저는 21학년도 수능부터 25학년도 수능까지 쉬지 않고 수능을 보았습니다. 일반적인...
-
저 사실 혼혈임 8 1
엄마는 한국사람이고 아빠는 전라민국 사람임
-
지금 5연패중임 아
-
단국대 오티나 새터 0 0
언제인가요? 추가합격한 사람들도 갈 수 있을런지..
-
아침에 샤워하는 사람들은 1 0
아침에도 샤워하고 밤에도 샤워함? 난 항상 밤에만 샤워하는데
-
아 이제 그를 놓아줬습니다 8 0
닉변했음 아케인 라이즈씨 잘가요 이젠 널 놔줄게
첫번째 댓글의 주인공이 되어보세요.