https://school.programmers.co.kr/learn/courses/30/lessons/133502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
stack을 이용하여 풀었다. 풀이 방법은 조건에 만족하면 푸쉬 해주고 만족하지 않으면 버려주는 형태로 진행했다.
조건1. stack이 비어있을 때 다음에 들어올 것이 1이어야 한다.
조건2. 다음에 들어올 것이 1이다. 이 때 stack의 top이 3이면 answer++해주고 1,2,3을 제거해주고 1을 넣지 않는다.
조건3. 다음에 들어올 것이 stack의 top+1의 값과 같아야 한다. 만약 같지 않으면 기존의 stack 전체를 pop해준다.
#include <string>
#include <vector>
#include <stack>
using namespace std;
stack<int> st;
//순서가 만족하지 않으면 안 넣으면 되자나
int solution(vector<int> ingredient) {
int answer = 0;
for(int i = 0 ; i<ingredient.size(); i++){
if(st.empty()){
if(ingredient[i]==1)
st.push(1);
}
else{
if(ingredient[i]==1){
if(st.top()==3){
for(int j=0; j<3; j++){
st.pop();
}
answer++;
}else{
st.push(1);
}
}
else{
if(st.top()+1 == ingredient[i]){
st.push(ingredient[i]);
}else{
while(!st.empty()){
st.pop();
}
}
}
}
}
return answer;
}
'코딩테스트 > C++' 카테고리의 다른 글
[프로그래머스 Level 2] 두 큐 합 같게 만들기(C++) (0) | 2024.05.03 |
---|---|
stack 활용법 (0) | 2024.04.25 |
[프로그래머스 Level 1] 실패율(C++) (0) | 2024.04.21 |
순서 강제하기 기법 (0) | 2024.04.21 |
[ 백준 BOJ ] 14003번 - 가장 긴 증가하는 부분 수열 5(C++) (0) | 2024.04.19 |