본문 바로가기

[IT] 코딩테스트/[문제 및 풀이] 프로그래머스

[프로그래머스] 택배상자 / 자바(Java)

728x90

문제

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

 

프로그래머스

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

programmers.co.kr

 

유사한 문제

2023.10.25 - [[IT] 코딩테스트/[문제 및 풀이] 프로그래머스] - [프로그래머스] 과제 진행하기 / 자바(Java)


해설

스택 자료구조를 사용하면 간편하게 구현 가능하다.

order에 있는 값들을 차례로 훑어나갈 인덱스 index를 따로 만들고

for문을 통해 택배 번호를 가진 i 로 택배를 하나씩 가져와 확인한다

 

우선 택배를 스택에 쌓아두고 내부에 while문을 통해 스택의 가장 위에 기사님이 원하는 택배가 있는 경우 빼주는 방식으로 해결한다.

주의점

  • 입력으로 주어진 값은 기사님이 원하는 택배 번호의 순서대로 되어있다.

코드

import java.util.*;
class Solution {
    public int solution(int[] order) {
        int answer = 0;
        Stack<Integer> s = new Stack<>();
        int index=0;
        for(int i=1;i<=order.length;i++){
            
            // 일단 보조에 넣어보기
            s.push(i);
            
            //보조에 있던 상자 정리
            while(!s.isEmpty() && s.peek()==order[index]){
                s.pop();
                answer++;
                index++;
            }
        }
        return answer;
    }
}
728x90