컴공 일기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
생명2는 그냥 받는다. 얼른 생명 와서 2등급 받고 인서울 공대 가자.
-
슬럼프 어케 극복해요 2 0
지금 개씹슬럼프인거 같은데 슬럼프가 온 이유는 수학이 제일 자신있는 과목이고 모든...
-
수1 문제 2개 6 0
그제 봤던 기말고사 문제고 직접 다시 타이핑 했음(필기 이슈) 객관적으로 이정도...
-
여러분이라면? 이유도 간략하게 부탁드려요 김기현 텔그 설맞이 약사
-
ㅇㅈ) 반삭 함 더 함 2 0
맛있게따..
-
매우 높은 확률로 고전소설 연계되겠죠??
-
(이의신청) 정치와 법 - 민법 기말고사 이의 신청 한번 검토해주시면 감사하겠습니다. 이거 하나만 틀렸는데, 너무 억울합니다. 50 5
2025 2학년 1학기 기말고사 이의신청서 과목명: 정치와 법 본래 정답: 5번...
-
2사탐으로도 의대 가능할까요 11 0
만점 받아야 가능하겠죠??ㅋㅋㅋㅠ
-
기말끝 0 0
2년반에걸친 내신공부가드디어끝났다 이제재미없는 통암기 말고 재밌는 수능공부 해야지
-
내 6평 성적으로 SKY 가능? 29 40
안녕하세요. 파급효과입니다. 오늘은 큰 업데이트 소식 하나 들고 왔습니다. 정시...
-
가능성이 낮아도 0 0
나는 시도해보는 것도 용기라고 생각함. 가장 머리가 빠르게 돌아갈때 안 해 보면...
첫번째 댓글의 주인공이 되어보세요.