예를 들어, test case 2 인 [9, 1, 5, 3, 6, 2] 배열을 numbers라고 할 때,
numbers와 길이가 같은 answer 배열을 만들어
numbers[i] 인 값의 뒤로 numbers[i] 보다 큰 값을 answer[i]에 담아
배열 answer을 return하는 solution을 작성하시오.
class Solution {
int[] answer;
int[] numbers;
public int[] solution(int[] numbers) {
this.numbers = numbers;
int len = numbers.length;
this.answer = new int[len];
this.answer[len - 1] = -1;
for (int i = len - 2; i >= 0; i--) {
this.answer[i] = getBiggerNumIdx(this.numbers[i], i + 1);
}
for (int i = 0; i < len; i++) {
if (answer[i] == -1) continue;
this.answer[i] = this.numbers[this.answer[i]];
}
return this.answer;
}
private int getBiggerNumIdx(int num, int idx) {
if (num < this.numbers[idx]) return idx;
if (this.answer[idx] == -1) return -1;
return getBiggerNumIdx(num, this.answer[idx]);
}
}