컴공 일기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시에서 3시 사이 배송 예정 슬라임만도 못한 연대 확정 땅땅땅
-
이화의 꿀교양 리스트 궁금한 새내기벗,, 이쪽으로. 0
대학커뮤니티 노크에서 선발한 이화여대 선배가 오르비에 있는 예비 이화여대학생,...
-
확통 최저 5
(메디컬x)수시 자연계 학과 수학 최저는 확통으로 맞춰도 되나요?? 학교마다 다...
-
강의수가 거의 2배나 늘어났는데....많이 달라진거아닌가요?
-
이기 2
율곡 이이의 이와 기 이런 심오한 뜻이!!!!
-
입결차이 어느정도 나나요?꽤나는편인가요?? 경대는 미적과탐 2합3이던데
-
살아있다 2
그립읍니다
-
재수생 달린다 4
고고혓
첫번째 댓글의 주인공이 되어보세요.