출처: 프로그래머스 코딩 테스트 연습
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에는 넣어야하는 순서가 적혀있는데, 꺼낸 박스들을 원소에 적힌 순서대로 넣으라는 것.
'🛡️ 코딩테스트 > 🛡️ 코테 : 프로그래머스' 카테고리의 다른 글
C# 행렬 테두리 회전하기 - 행렬 / 프로그래머스 [Lv.2] (0) | 2023.03.20 |
---|---|
C# 두 큐 합 같게 만들기 - 그리디 Queue / 프로그래머스 [Lv.2] (0) | 2023.03.19 |
C# 롤케이크 자르기 - HashSet / 프로그래머스 [Lv.2] (0) | 2023.03.17 |
C# 뒤에 있는 큰 수 찾기 - Stack / 프로그래머스 [Lv.2] (0) | 2023.03.16 |
C# 숫자 변환하기 - BFS / 프로그래머스 [Lv.2] (0) | 2023.03.16 |