컴공 일기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를 선물하세요.
-
올해 수능 미적 킬러 예측 0 0
귀여운 음함수의 미분법 삼도미~
-
고1 수학 선행 1 0
모고 수학 안정 1나오는 고1입니다 현재 쎈발점으로 대수 + 공수2 동시에...
-
진짜 n수 막을거라 생각함?
-
걍 확통할까 3 0
내 분수를 몰라도 내가 너무 모르는걸까
-
배달언제오냐 0 1
엄마오기전에 교재가 배달와야하는데
-
13121 어디까지 ㄱㄴ?? 2 0
백분위 96 85 93 98 영어는 1~2진동 가정 화작 수학 미/기 사탐2 학과...
-
아자아자 화이팅.
-
알고리즘 갑자기 왜이럼 2 0
이게 갑자기 왜뜸뇨ㅋㅋㅋ
-
올해로 수능 공부는 끝내고싶다 2 0
하…
-
그만 글싸고 공부해라 3 0
넵
-
강민철후두티갖고싶다 2 0
강민철얼굴 그려진 후드티인가.. 이거입고 수능장가면 시선강탈 오지게될듯ㅋㅋ
-
씻고 와서 댓글 탐방해야겠당 2 1
-
나 은테인데 투데이가 2천 몇이였음 ㅋㅋㅋ
-
7모 콘크리트 후기 0 2
13분 재고 풀었는데 다맞앗음 ㅎㅅㅎ 10분대로 줄이는게 일단 목표 보기에서 시간 너무 많이 먹음
-
여름휴가다 0 0
얏호
첫번째 댓글의 주인공이 되어보세요.