문제
풀이
이 문제는 자바에서 기본적으로 제공하는 Stack을 이용해 풀이 할 수 있지만, 이번에는 배열과 포인터 역할을 하는 변수를 이용하여 구현해 보았다. 입력받은 N크기의 stack 배열을 생성하고, 사용자의 입력에 맞게 함수를 처리한다.
push(n) 함수는 ptr을 1 증가시키고 stack[ptr]에 n을 저장한다.
pop() 함수는 ptr이 -1이면 -1을 반환하고, 아니라면 stack[ptr]을 반환하고 ptr을 1 빼준다.
size() 함수는 ptr + 1을 반환한다.
empty() 함수는 ptr이 -1이면 1을 반환하고, 아니라면 0을 반환한다.
top() 함수는 ptr이 -1이면 -1을 반환하고, 아니라면 stack[ptr]을 반환한다.
배열과 포인터 대신 List와 List의 크기를 이용하여 구현 할 수도 있다.
코드
import java.util.*
fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val num = br.readLine().toInt()
val stack = IntArray(num)
var ptr = -1
fun push(n: Int) {
stack[++ptr] = n
}
fun pop(): Int {
return if(ptr==-1) -1
else stack[ptr--]
}
fun size(): Int = ptr + 1
fun empty(): Int {
return if(ptr == -1) 1
else 0
}
fun top(): Int {
return if(ptr == -1) -1
else stack[ptr]
}
for(i in 0 until num) {
val line = StringTokenizer(br.readLine())
when(line.nextToken()){
"push" -> push(line.nextToken().toInt())
"pop" -> bw.append("${pop()}\n")
"size" -> bw.append("${size()}\n")
"empty" -> bw.append("${empty()}\n")
"top" -> bw.append("${top()}\n")
}
}
bw.write("")
bw.flush()
bw.close()
br.close()
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 1463번: 1로 만들기 - Kotlin[코틀린] (0) | 2023.07.17 |
---|---|
[백준] 1316번: 그룹 단어 체커 - Kotlin[코틀린] (0) | 2023.07.17 |
[백준] 1065번: 한수 - Kotlin[코틀린] (0) | 2023.07.14 |
[백준] 4673번: 셀프 넘버 - Kotlin[코틀린] (0) | 2023.07.13 |
[백준] 2839번: 설탕 배달 - Kotlin[코틀린] (0) | 2023.07.12 |