뒤에 있는 큰 수 찾기
import java.util.*
class Solution {
fun solution(numbers: IntArray): IntArray {
val answer = mutableListOf<Int>()
val stack = Stack<Int>()
for(i in numbers.lastIndex downTo 0) {
var maxNum = -1
while(stack.isNotEmpty()){
if(stack.peek() > numbers[i]) {
maxNum = stack.peek()
break
} else {
stack.pop()
}
}
answer.add(maxNum)
stack.push(numbers[i])
}
return answer.reversed().toIntArray()
}
}
Stack
Stack
은 후입선출(나중에 입력된 것이 먼저 출력된다)
의 구조를 갖는 자료구조이다.
코틀린에서 Stack을 사용하기 위해서는 직접 구현하거나 java.util.Stack
를 import 하여 Java의 Stack을 사용할 수 있다.
Stack 함수
- push : 원소를 삽입한다.
- pop : 가장 위에 있는 원소를 삭제하고 해당 원소를 반환한다.
- peek : 현재 가장 위에 있는 원소를 반환한다.
- size : 현재 스택의 사이즈
- search : 현재 찾을 원소가 존재한다면 원소가 나갈 순서를 반환하며, 존재하지 않다면 -1를 반환한다.
- isNotEmpty : 스택이 비어있지 않다면 True를 반환한다.
- isEmpty : 스택이 비어있다면 True를 반환한다.
참조
Kotlin 스택(Stack)