728x90
반응형
문제 설명
컨베이어 벨트에서 택배를 확인하고 트럭에 순서대로 싣는 문제다.
고려해야 할 점은 택배는 반드시 기사님이 알려준 순서대로, 즉 order와 같은 순서로 트럭에 올라가야 한다.
order[] 배열은 컨베이어 벨트에서 몰려오는 택배의 순서이고 해당 택배를 트럭에 싣는게 불가능 하다면 보조 컨테이너를 이용해서 잠시 배치할수 있다.
보조 컨테이너는 입구 이외에는 다른 면이 모두 막혀있는 구조이기 때문에 가장 마지막에 보관한 상자부터 꺼낼 수 있다.
이러한 상황에서 몰려오는 택배 상자를 최대 몇개까지 트럭에 넣을 수 있는지를 구하는것이 이번 문제의 답이다.
풀이 과정
- 우선 택배 상자를 순서대로 확인하는 작업을 하는 반복문을 만들었다.
- 반복문의 과정 중 i번째의 상자가 트럭에 바로 넣을 수 없는 택배라면 보조 컨테이너로 보낸다.
- 보조 컨테이너는 입구 이외에는 막혀있는 구조이기 때문에 스택을 이용해서 구현한다.
- 보조 컨테이너의 상자가 현재 트럭에 넣을 수 있는 택배라면 반복해서 트럭에 채워넣는다.
해당 코드
public int solution(int[] order)
{
Stack<int> stack = new Stack<int>();
// 현재 트럭에 실어야 하는 상자의 순서 인덱스
int index = 0;
// 전체 상자 숫자
int n = order.Length;
// 1번 상자부터 n번 상자까지 처리
for (int i = 1; i <= n; i++)
{
// 컨테이너 벨트에서 상자를 꺼내 스택에 보관
stack.Push(i);
// 스택의 맨 위 상자가 트럭에 실어야 하는 상자와 일치하는 동안 반복
while (stack.Count > 0 && stack.Peek() == order[index])
{
// 스택에서 상자를 꺼내 트럭에 싣는다
stack.Pop();
// 트럭에 상자 올리기
index++;
}
}
// 트럭에 실은 상자의 개수 반환
return index;
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
C# [프로그래머스] Lv.2 의상 (1) | 2024.08.27 |
---|---|
C# [프로그래머스] Lv.2 두 큐 합 같게 만들기 (0) | 2024.08.09 |
C# [프로그래머스] Lv.2 귤 고르기 (0) | 2024.08.02 |
C# [프로그래머스] Lv.2 카펫 (1) | 2024.07.31 |
C# [프로그래머스] 음양 더하기 (0) | 2024.05.09 |