1. 문제 풀이 아이디어
- 뒤에서부터 큰 수를 찾고, 현재 숫자와 뒤의 숫자 및 그 숫자의 뒷 큰수를 비교하면 문제를 해결할 수 있다.
2. 나의 정답 코드
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
answer[answer.length - 1] = -1;
for (int i = numbers.length - 2; i >= 0; i--) {
for (int j = i + 1; j < numbers.length; j++) {
if (numbers[i] < numbers[j]) {
answer[i] = numbers[j];
break;
} else {
if (answer[j] == -1) {
answer[i] = -1;
break;
}
if (numbers[i] < answer[j]) {
answer[i] = answer[j];
break;
}
}
}
}
return answer;
}
}
3. 정리
- 작거나 같을 경우 뒷 큰수와 비교하고 뒷 큰수가 -1일 경우 -1을 넣고 뒷큰소가 더 클 경우 뒷 큰수를 넣는다.
- 배열의 마지막 요소는 항상 뒷 큰수가 없으므로
1
을 할당한다.
numbers.length - 2
부터0
까지 순차적으로 현재 숫자와 그 뒤의 숫자들을 비교한다.
- 만약 뒤의 숫자가 현재 숫자보다 크다면, 뒤의 숫자를
answer
배열에 넣는다.
- 만약 뒤의 숫자가 현재 숫자보다 작거나 같으면, 뒷 큰수와 비교한다.
- 만약 뒷 큰수가
-1
이면-1
을 넣고, 현재 수보다 더 크다면 그 값을 넣는다.
Share article