제한사항을 보고 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;
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 - 롤케이크 자르기 (0) | 2023.05.05 |
---|---|
(Java) 프로그래머스 - 숫자 변환하기 (0) | 2023.05.05 |
(Java) 프로그래머스 - 연속 부분 수열 합의 개수 (0) | 2023.04.28 |
(Java) 프로그래머스 - 공원 산책 (0) | 2023.04.26 |
(Java) 프로그래머스 - 개인정보 수집 유효기간 (0) | 2023.04.25 |