2023
03.18

출처: 프로그래머스 코딩 테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/131704

 

 

나의 풀이

public int solution(int[] order) // 택배 기사가 원하는 순서
{
    int orderIndex = 0; // 택배 기사가 원하는 순서의 배열 인덱스
    var stack = new Stack<int>(); // 보조 벨트
    for(int i = 0; i < order.Length; ++i)
    {
        int box = i + 1; // 메인 벨트에서 나오는 박스에 써진 숫자
        if(box == order[orderIndex])
            ++orderIndex;
        else
            stack.Push(box);

        while(stack.Count > 0 && stack.Peek() == order[orderIndex])
        {
            stack.Pop();
            ++orderIndex;
        }
    }

    return orderIndex;
}

정말 간단한 스택문제.

정답률이 50%대로 낮은 편인데 문제 지문이 헷갈리게 제시되어 있다.

대부분의 코테 문제에서는 박스번호의 배열을 주는데 이 문제는 순서의 배열을 줬다.

그래서 변수명이 box가 아니라 order기는 한 듯.

 

 

[잘못된 이해]

order에 박스번호가 섞여서 적혀있는데, 그걸 꺼내서 오름차순으로 택배차에 싣을 수 있는가?

 

[실제 문제]

메인 벨트에서 꺼내는 box는 언제나 1, 2, 3 ... 의 순서대로 적혀있고,

order에는 넣어야하는 순서가 적혀있는데, 꺼낸 박스들을 원소에 적힌 순서대로 넣으라는 것. 

 

COMMENT