뒤에 있는 큰 수 찾기

KSang·2024년 1월 25일
0

[Kotlin]코드카타

목록 보기
97/100

Readme Card

🕵️문제설명

정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.

⚠️제한사항

4 ≤ numbers의 길이 ≤ 1,000,000
1 ≤ numbers[i] ≤ 1,000,000

🔎로직설명

내 코드

class Solution {
    fun solution(numbers: IntArray): IntArray {
        val stack = mutableListOf<Int>()
        var answer = IntArray(numbers.size) { -1 }
    for (i in numbers.indices.reversed()) {
        while (stack.isNotEmpty() && stack.last() <= numbers[i]) {
            stack.removeAt(stack.lastIndex)
        }
        if (stack.isNotEmpty() && stack.last() > numbers[i]) {
            answer[i] = stack.last()
        }
        stack.add(numbers[i])
    }
    return answer
    }
}

스택을 이용해서 풀었다.

numbers를 역순으로 배치한뒤 스택에 넣고 값을 비교하면서 스택보다 수가 낮으면 answer에 집어 넣었다.

0개의 댓글