코딩 테스트
(Java) 프로그래머스 - 뒤에 있는 큰 수 찾기
로승리
2023. 5. 4. 20:29
제한사항을 보고 O(n^2) 로직으로는 100% 시간 초과가 날 것이라고 생각했다.
그래서 O(n) Queue를 이용한 로직을 한참 고민했는데, 결국 해결하지 못해 검색을 통해 힌트를 얻어 해결했다.
최종 코드
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
Stack<Integer> stack = new Stack<>();
for (int i = numbers.length - 1; i >= 0; i--) {
while (!stack.isEmpty()) {
if(stack.peek() > numbers[i]) {
answer[i] = stack.peek();
break;
}
stack.pop();
}
if(stack.isEmpty()) {
answer[i] = -1;
}
stack.add(numbers[i]);
}
return answer;
}
}