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

lhs's avatar
Nov 29, 2024
[프로그래머스] 택배상자(131704)
 

1. 문제 풀이 아이디어

  • 문제에서 기존 컨테이너 벨트가 Queue 구조로 되어 있어 Queue를 사용해야 한다고 생각할 수 있지만, 실제로는 Stack만으로도 문제를 해결할 수 있다.

2. 나의 정답 코드

class Solution { public int solution(int[] order) { int answer = 0; Stack<Integer> stack = new Stack<>(); for (int i = 1; i <= order.length; i++) { stack.add(i); while (!stack.isEmpty()) { if (stack.peek() == order[answer]) { stack.pop(); answer++; } else { break; } } } return answer; } }

3. 정리

  • order의 크기만큼 for문을 실행하며, stack에 현재 값을 넣고, stack이 비어 있지 않은 동안 while문을 실행한다.
  • stack의 peek 값이 order[answer]와 같으면 stack에서 값을 제거하고 answer를 증가시킨다.
  • 값이 다를 경우 while문을 빠져나온다.
  • 이 과정을 반복하여 문제를 해결할 수 있다.
Share article

LHS's Study Space