TIL #61

loci·2024년 6월 30일
0

TIL

목록 보기
59/103


뒤에 있는 큰 수 찾기

주어진 배열에서 해당 요소의 뒤에 큰 수가 있다면 가장 가까운 큰수를 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
    }
}
profile
편리한 개발자

0개의 댓글