기본 틀 :
using System;
public class Solution {
public int solution(int[] order) {
int answer = 0;
return answer;
}
}
간단한 문제인데 사소한 실수와 생각이 너무 많아져서 문제를 빨리 해결하지 못 했다.
( 풀이 방법을 글로 적어봤는데 글이 별로라 ChatGPT의 도움을 받아 정리했다)
해결 방법
- 박스 인덱스 (boxIndex) 초기화
- 현재 적재해야 할 order의 인덱스를 추적하는 변수 boxIndex를 선언합니다.
- 박스 적재 과정
- 1부터 n까지 박스를 순차적으로 확인합니다.
- 현재 박스가 order[boxIndex]와 같다면 바로 트럭에 적재하고 boxIndex를 증가시킵니다.
- 그렇지 않다면, 보조 컨테이너(Stack)에 저장합니다.
- 보조 컨테이너에서 적재 확인
- Stack의 최상단 박스가 order[boxIndex]와 같다면, 이를 꺼내 트럭에 적재하고 boxIndex를 증가시킵니다.
- 더 이상 적재할 박스가 없을 때까지 반복합니다.
- 최종 결과 반환
- 트럭에 적재한 박스의 개수(boxIndex)를 반환합니다.
using System;
using System.Collections.Generic;
public class Solution {
public int solution(int[] order) {
int boxIndex = 0;
Stack<int> stack= new Stack<int>();
for(int i = 1; i <= order.Length; i++)
{
if(i == order[boxIndex])
boxIndex++;
else
stack.Push(i);
while(stack.Count > 0 && stack.Peek() == order[boxIndex])
{
stack.Pop();
boxIndex++;
}
}
return boxIndex;
}
}
문제 해결에 오랜 시간 걸린 이유로는
if(i == order[boxIndex])
boxIndex++;
if 문의 조건에 부합할 경우 boxIndex를 증가시키고 continue를 사용했기 때문이다...
그럴 경우 if 문 조건에 부합하는 박스를 찾은 이후
곧 바로 stack 안의 박스와 다음 우선순위의 박스를 조회하지 않아
박스를 꺼낼 기회를 잃어 오류가 발생했다...
개인적으로 요새 생각하는 문제를 해결에 생각하는 힘이 너무 많이 떨어지기 시작한 것 같아 속상하다ㅜㅜ
'문제 풀기 > C#' 카테고리의 다른 글
107. 큰 수 만들기 (0) | 2025.04.22 |
---|---|
105. 쿼드압축 후 개수 세기 (0) | 2025.04.22 |
104. 소수 찾기(재귀 함수를 이용한 소수 만들기) (0) | 2025.04.01 |
103. 가장 큰 수 (Array.Sort, CompareTo) (0) | 2025.03.31 |
102. 다리를 지나는 트럭 (0) | 2025.03.31 |