문제 설명
해결과정
Solution.java
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int [numbers.length];
ArrayDeque<Integer> stack = new ArrayDeque<Integer>();
// 초기 값 집어 넣기
stack.addLast(0);
// 변수 선언 구간
// int num = 0;
int index = 0;
int tempindex = 0;
for(int num : numbers) {
// 현재 numbers의 원소를 num에 저장
// num = numbers[i];
while(true) {
// 현재 for문으로 방문한 인덱스가 가르키는 값(num) 과 stack의 인덱스가 가르키는 값(numbers[index]) 비교
if(stack.isEmpty()) {
stack.addLast(index);
break;
} else {
// 가장 최근에 있던 값을 가져오기(인덱스)
tempindex = stack.getLast();
// 현재 원소가 스택이 가르키는 원소보다 작다면
if(num <= numbers[tempindex]) {
stack.addLast(index);
break;
}
// 현재 원소가 스택이 가르키는 원소보다 크다면
else {
// answer의 index의 원소를 현재 num으로 변경
answer[tempindex] = num;
// 스택에서 현재 원소 제거
stack.removeLast();
}
}
}
index++;
}
while(!stack.isEmpty()) {
answer[stack.removeLast()] = -1;
}
return answer;
}
// ArrayDeque 초기화
public void initializeArrayDeque (int[] numbers) {
ArrayDeque<Integer> stack = new ArrayDeque<Integer>();
stack.addLast(0);
}
}
Java
복사