https://school.programmers.co.kr/learn/courses/30/lessons/131704#
풀이 - 나의 생각
원래 레일에는 1번 택배부터 n번 택배까지 순서대로 올라와 있다.
하지만 목적지에 따라
기사가 원하는 순서대로 바꾸기위해서
보조 컨테이너 벨트를(이하 보조 벨트) 사용할 수 있다.
이 보조 벨트에서 짐을 내리는 순서는
올려놓은 순서의 역순으로만 내릴 수 있다.
즉, 4번을 먼저 싣기위해
1, 2, 3 번을 보조 벨트에 올리면
3, 2, 1 순으로 꺼낼 수 있다.
이건 뭐다?
First In, Last Out => Stack 이다.
그래서 이 위의 설명처럼
order[i] 가 원래 짐과 순서가 다르면
그 순서를 맞추기 위해
원하는 짐의 순서(order[i])까지
스택에 넣어주면 된다.
그 후에
스택의 최상위 값(stack.peek())가 원하는 짐이 맞는지 체크만 해주면 된다.
코드
import java.util.*;
class Solution {
public int solution(int[] order) {
int answer = 0;
int len = order.length;
int box = order[0], num = 0;
Stack<Integer> subRail = new Stack<>();
for(int i = 0; i < len; i++){
box = order[i];
while(num+1 <= box){
subRail.push(num+1);
num++;
}
if(subRail.peek() == box){
subRail.pop();
answer++;
}else break;
}
return answer;
}
}
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
월간 코드 챌린지 시즌1 > 쿼드압축 후 개수 세기 - JAVA (분할 정복) (0) | 2024.01.22 |
---|---|
월간 코드 챌린지 시즌2 > 2개 이하로 다른 비트 (1) | 2024.01.21 |
코딩테스트 연습 > 롤케이크 자르기 (0) | 2024.01.12 |
2019 KAKAO BLIND RECRUITMENT > 오픈채팅방 - JAVA (0) | 2024.01.12 |
Summer/Winter Coding(~2018) > 스킬트리 - JAVA (0) | 2024.01.11 |