class Solution {
fun solution(arr: IntArray): IntArray {
var i = 0
var stk: IntArray = intArrayOf()
while(i < arr.size){
if(stk.isNotEmpty() && stk.last()>= arr[i]){
stk = stk.filter { it != stk.last() }.toIntArray()
}else{
stk = stk + arr[i]
i++
}
}
return stk
}
}
import java.util.*
class Solution {
fun solution(arr: IntArray): Stack<Int> {
val stack = Stack<Int>()
var i = 0
while (i < arr.size) {
if (stack.empty() || stack.peek() < arr[i]) {
stack.push(arr[i])
i++
} else if (stack.peek() >= arr[i]) {
stack.pop()
}
}
return stack
}
}
Stack<Int>
val stack = Stack<Int>() // 빈 정수형 스택 생성
empty()
if (stack.empty()) {
println("스택이 비어 있습니다.")
}
peek()
if (!stack.empty()) {
println("최상위 요소: ${stack.peek()}")
}
push()
스택의 맨 위에 새로운 요소를 추가합니다.
import java.util.*
fun main() {
// 1, 2, 3, 4, 5가 들어 있는 스택 생성
val stack = Stack<Int>()
stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
stack.push(5)
println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3, 4, 5]
// 스택에 10을 추가
stack.push(10)
println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3, 4, 5, 10]
}
pop()
스택의 맨 위에 있는 요소를 반환하고 제거합니다.
데이터를 꺼내면서 스택에서 삭제합니다.
주의: 스택이 비어 있으면 예외(EmptyStackException)가 발생합니다.
import java.util.*
fun main() {
// 1, 2, 3, 4, 5가 들어 있는 스택 생성
val stack = Stack<Int>()
stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
stack.push(5)
println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3, 4, 5]
// pop()을 사용하여 스택에서 숫자 하나를 꺼냄
val poppedValue1 = stack.pop()
println("꺼낸 값: $poppedValue1") // 출력: 5
println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3, 4]
// 또 다른 pop() 호출
val poppedValue2 = stack.pop()
println("꺼낸 값: $poppedValue2") // 출력: 4
println("스택에 담긴 요소들: $stack") // 출력: [1, 2, 3]
}