뒤에 있는 큰 수 찾기
주어진 배열에서 해당 요소의 뒤에 큰 수가 있다면 가장 가까운 큰수를 answer에 넣어주고 없다면 -1을 넣어준 answer를 반환 해줘야한다.
처음에 풀때 제한사항이 1000000이라서 안될 것 같았지만 다른 생각이 안나서 일단 이중반복문으로 풀었는데 역시 안됐었다. 그래서 다른사람코드들을 보니 스택을 이용해 풀수있었다.
나의코드
class Solution {
fun solution(numbers: IntArray): IntArray {
var answer = mutableListOf<Int>()
for (i in numbers.indices){
for(j in i until numbers.size){
if(numbers[i] < numbers[j]){
answer.add(numbers[j])
break
}
if(j == numbers.size-1){
answer.add(-1)
}
}
}
return answer.toIntArray()
}
}
다른사람코드
class Solution {
fun solution(numbers: IntArray): IntArray {
var answer = IntArray(numbers.size) {-1}
val stack = mutableListOf<Int>()
for(i in numbers.indices){
while(stack.isNotEmpty() && numbers[stack.last()] < numbers[i]){
val index = stack.removeAt(stack.size-1)
answer[index] = numbers[i]
}
stack.add(i)
}
return answer
}
}