https://school.programmers.co.kr/learn/courses/30/lessons/131704?language=cpp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
과정
- 스택(보조 컨테이너)에 현재 숫자보다 컨테이너 앞에 상자를 넣어준다.
- 만약 스택 맨 위의 숫자가 꺼내야하는 상자보다 크고 보조 컨테이너가 차있는 경우 상자를 꺼낼 수 없으므로 종료한다.
- 스택 맨 위의 숫자와 꺼내야하는 상자와 일치하면 ans를 1 증가시키고 오더가 끝날때 까지 반복한다.
코드
더보기
#include <string>
#include <vector>
#include <stack>
using namespace std;
int calc(vector<int> order){
int ans=0;
int idx=1;
stack<int> s;
int N=order.size();
for(int i=0;i<N;++i){
int num=order[i];
//못꺼내는 경우 = 보조컨테이너에서 꺼낼수 없는 놈 or 컨테이너 맨 앞에 있는 경우
if(!s.empty()&&s.top()>num){
break;
}
while(idx<=num){
//1번~num이전꺼 까지 보조 컨테이너에 넣음
s.push(idx++);
}
if(s.top()==num)
s.pop();
++ans;
}
return ans;
}
int solution(vector<int> order) {
int answer = 0;
answer=calc(order);
return answer;
}
728x90
'알고리즘 > 프로그래머스 문제' 카테고리의 다른 글
| [ALGORITHM] LEVEL3 2022 KAKAO TECH INTERNSHIP - 등산코스 정하기 (0) | 2022.12.14 |
|---|---|
| [ALGORITHM] LEVEL4 - 쌍둥이 빌딩 숲 (0) | 2022.12.03 |
| [ALGORITHM] LEVEL3 - 억억단을 외우자 (0) | 2022.12.02 |
| [ALGORITHM] LEVEL2 - 귤 고르기 (0) | 2022.11.28 |
| [ALGORITHM] LEVEL2 - 롤케이크 자르기 (0) | 2022.10.26 |
댓글