본문 바로가기

코딩테스트/프로그래머스

[프로그래머스] 택배상자

728x90
반응형


🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/131704

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


728x90

👩‍💻 코드

#include <string>
#include <vector>
#include <stack>

using namespace std;

int solution(vector<int> order) {
    int answer = 0;
    int index = 0;
    stack<int> targets;
    
    for(int target=1; target<=order.size(); target++){
        if(order[index] == target){
            index++;
            answer++;
            
            while(!targets.empty() && targets.top() == order[index]){
                targets.pop();
                index++;
                answer++;
            }
        }else{
            targets.push(target);
        }
    }
    
    return answer;
}

📝 풀이

반복문의 변수는 target은 현재 실어야 하는 번호를 나타냅니다.

1부터 시작하여 순차적으로 확인합니다.

 

현재 상자(target)가 order에서 트럭에 실어야 하는 상자와 일치하면 바로 트럭에 싣습니다. 👉 answer++

그리고 다음 목표로 넘어갑니다. 👉 index++

일치하지 않으면 해당 상자를 보조벨트에 보관합니다. 👉 targets.push(target)

 

보조벨트에서 트럭에 실어야 하는 상자와 일치하면 꺼내어 트럭에 싣습니다.

 

모든 상자를 처리하면 반복문이 종료되고 answer을 return 합니다.

 

 

 

728x90
반응형