인프런 커뮤니티 질문&답변
작성자 없음
작성자 정보가 삭제된 글입니다.
점진적과부하 문제 - 시간 초과 오류
작성
·
39
0
public int[] solution1(int[] weights) {
int[] answer = new int[weights.length];
ArrayDeque<int[]> stack = new ArrayDeque<>();
for (int i = 0; i < weights.length; i++) {
int weight = weights[i];
while (!stack.isEmpty() && stack.peek()[1] < weight) {
var popped = stack.pop();
int poppedIndex = popped[0];
answer[poppedIndex] = i - poppedIndex;
}
stack.push(new int[] {i, weight});
}
return answer;
}위와 같이 답변을 작성하였고, 강의에서 나오는 답과 변수명 정도 외에는 차이가 없어 보이는데, 시간 초과 오류가 발생합니다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 김주현님.
제시하신 코드에서 시간 초과 오류가 발생하는 것을 해결하기 위해 몇 가지 중요한 최적화와 팁을 제공드립니다.
문제의 원인 점검
스택 사용의 적절성: 주어진 코드는
스택을 사용하여 반복되는 작업을 수행하는 논리를 가지고 있습니다. 이 과정에서stack이 빠르게 쌓였다가 비워질 수 있어야 효율적인 동작이 가능합니다.입출력 최적화: Java에서는 특히 입출력에서 시간이 많이 소모될 수 있습니다. 문제 해결 후 실제 사용에서는 입출력 부분도 따로 최적화가 필요할 수 있습니다.
효율적인 알고리즘 사용: 스택을 활용한 알고리즘에서는 빅오 표기법에서 O(n)의 복잡도를 목표로 작성되어야 합니다. 무작정 반복문을 중첩 사용하지 않도록 주의하세요.
해결 전략
while루프 내의 논리 검토: 코드 내에 있는while루프가 불필요하게 많은 반복을 돌고 있는지 확인해 보세요. 특히 조건 검사 및 스택 연산이 올바른 방식으로 설정되어 있는지 중요합니다.변수 및 로직 재검토: 변수가 원하는 방식으로 업데이트되고 있는지 확인하십시오. 예를 들어, 조건에 따라 정확히
stack이 비어질 수 있는지를 고민해 보세요.
관련 참고 글
더 많은 예제와 해결 방법에 대해서는 다음과 같은 유사한 게시물을 참조하실 수 있습니다.
Java 시간초과 오류 해결법: Java 환경에서의 시간 초과 문제를 효과적으로 대처하는 방법을 다루고 있습니다.
효율적인 스택 구현과 최적화: 스택을 사용하는 다양한 방법과 그 최적화 기법을 설명하고 있습니다.
이와 같은 개선점을 확인하신 후에도 문제 해결이 어려울 경우, 다른 부분에서 병목이 발생하고 있을 수도 있으니 전문가의 입력을 고려해 보시는 것도 좋은 방법입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





네넵 ㅎㅎ 저도 확인해보니까, solution으로 작성하신거 잘 돌아가네용