컴공 일기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를 선물하세요.
-
기하러들 집합 3 0
해주셔서 감사합니다 저 기하 맛보려고 하는 쌩초짜 뉴비인데 기하 강사 누구들어야될지...
-
야이거지들아형전재산인증한다 11 1
허리가부셔질만큼허리띠를꽉졸라매.
-
전 사실 모아이임... 2 0
모 eye에 피눈물 흘리게 하는 불효자임뇨
-
약속의 10분전 ✊✊✊ 0 0
.
-
호날두 인문 지문 [4~6] 축구선수의 경계를 허문 호날두의 영향 17 1
호날두 탄신일 기념 호날두 인문 지문
-
합격 했지만 아쉬움이 0 0
표준점수 390점이며 한 성 중 공대 3합했습니다. 나름 컨설팅도 받았는데......
-
Ai하고 담소를 나누는 중 1 1
재밋어요
-
이거 귀엽지않음? 4 0
이 물건은 뭔거같음?
-
샘퍼 만들어주신분 감사 0 0
샘퍼 최초합 나왔는데 맞네요. 만드신분 진짜 감사해요~~
-
어젠 다행히도 내 키는 넘음
-
님들아 수2에서 직선 기울기 움직이면서 교점파악 2 1
하는 유형이 나오면 보통 수능에서 킬러인가요?
-
다군 예비 11번 0 0
될까요..? 다군은 많이 돈다고 들었던거같은데 가나군 우주예비라 이거라도 되야하는데...
-
제발
첫번째 댓글의 주인공이 되어보세요.