kotlin에서 stack은 인터페이스가 아닌 클래스로 존재한다.

스크린샷 2025-02-03 오후 4.07.57.png

1. Stack

현재 Stack: [A, B, C, D] 
현재 Stack: [A, B, C] 
현재 Stack 맨 위 데이터: C

2. ArrayDeque

현재 Stack: [D, C, B, A] 
현재 Stack: [C, B, A] 
현재 Stack 맨 위 데이터: C 
import java.util.*

fun main() {
    
    val stack = Stack<Char>() //1. stack 클래스 사용
    stack.push('A')
    stack.push('B')
    stack.push('C')
    stack.push('D')
    println("1. Stack\\n")
    println("현재 Stack: $stack ")
    stack.pop()
    println("현재 Stack: $stack ")
   	println("현재 Stack 맨 위 데이터: ${stack.peek()}\\n")
    
    //2. ArrayDeque 클래스 
    val arrDeq = ArrayDeque<Char>()
    arrDeq.push('A')
    arrDeq.push('B')
    arrDeq.push('C')
    arrDeq.push('D')
    println("2. ArrayDeque\\n")
    println("현재 Stack: $arrDeq ")
    arrDeq.pop()
    println("현재 Stack: $arrDeq ")
    println("현재 Stack 맨 위 데이터: ${arrDeq.peek()} ")
    
}

문제

정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 다섯 가지이다.

입력

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.

출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

예제 입력 1 복사