컴공 일기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를 선물하세요.
-
공부만 ㅈㄴ 해서 그런가 어느정도 친한 애들 있긴한데 몇 명빼곤 정이 안 감….
-
제발 새내기 모임같은 거 가서 오르비 얘기 꺼내지마라 차라리 빡갤 한다고 해라...
-
저 저녁 아직도 안 먹음 머먹을까요
-
대존맛임뇨
-
국민대 합격생을 위한 노크선배 꿀팁 [국민대25][기숙사, 자취방, 고시원] 0
대학커뮤니티 노크에서 선발한 국민대 선배가 오르비에 있는 예비 국민대학생, 국민대...
-
이명학 알고리즘 0
예비고3인데 고3 모고 80후반 or 90초 뜹니다. 뭔가 영어를 전체적으로...
-
하아아아아아ㅏ아아 14
레어 댕같이 물렸네!!@@@@!!!!
-
확실히 오르비가 유해졌어 이게 커뮤지
-
ㅈㄱㄴ
-
태재대! 일단 최종 합격까지 도전해보겠습니다.
-
공대 기준 족보 자료 얻는게 성적 판가름 할 정도로 엄청 중요한 건가요? 아니면...
-
대충 앞사람 성적보면서 얘가 빠질지 안빠질지 예측하는거임??
-
다시 돌아가도 거기 쓸 생각은 죽어도 안 할 것 같아서ㅋㅋ 걍 기억에서 지워야지
-
...
-
고연(연고)대는 모두 괜찮은데잖아요
-
컨설팅업체가 뭔짓을 한겨
첫번째 댓글의 주인공이 되어보세요.