컴공 일기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
금요일 분당 두각 들었던 분들! 이번주 몇 분 정도 오바하나요?
-
걍 사탐은 나형 취급받았던 시절임 저걸로 못가면 ㅋㅋㅋ 이런반응이었지
-
연하남 키잡마렵네 0 0
하
-
ai를 활용한 수능 부정행위 2 0
본인은 본 글의 내용을 행위로 옮길 의도가 없으며, 본 글의 내용을 실행할 시...
-
나다. 무
-
96일 0 0
작수 64557 성적 향상 프로젝트 시작합니다.
-
하 시발 하늘님 0 1
수능 디데이 1000일때로 돌아가게 해주세요 깝치지않고 지방 이사가서 수시할게요
-
생윤 기출 다음 커리 조언좀요 0 0
림잇으로 개념 끝냈고 현돌 2회독 했는데 다음커리로 뭘 하는게 나을까요?
-
3년전 자료 이제 푸는 5수생 4 2
23 재종 미적 스탠다드 1권 ㅋㅋㅋㅋㅋ 그저...
-
N제안풀고 0 0
기출만 무한회독하고 수능쳐볼까 뭔가실험해보고싶네
-
재수에 대한 단상 0 2
번개는 같은 곳에 두 번 치지 않는다 다시 친다고 막을 수 없으니까 그리고...
-
이기적인 놈, 과탐이 망해도 좋다는 거냐. 물1화1으로 수능날까지 머리싸매면서...
첫번째 댓글의 주인공이 되어보세요.