백준
[백준][Kotlin]1874번 스택 수열
끝까지 처음처럼
2023. 2. 26. 01:04
728x90
해당 문제는 스택의 자료구조를 알고 있으면 매우 간단한 문제입니다.
문제를 간단히 설명하자면 스택 내부에 들어간 자료들은 오름차순을 유지해야 하며, 불가능 할 시 No을 출력
push 를 실행할때는 +, pop일때는 - 를 출력하는 문제입니다.
하기는 작성한 코드와 채점 현황 입니다.
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.*
fun main() {
// val s = System.currentTimeMillis()
var br = BufferedReader(InputStreamReader(System.`in`))
//var bw = BufferedWriter(OutputStreamWriter(System.out))
var st = StringTokenizer(br.readLine())
val N = st.nextToken().toInt() // 수열의 개수
var sb = StringBuilder()
var stack = Stack<Int>()
var value = 1
for(i in 1 .. N){
st = StringTokenizer(br.readLine())
var target = st.nextToken().toInt()
while(stack.isEmpty() || stack.last() < target){
stack.add(value)
value++
sb.append("+\n")
}
if(stack.last() == target){
stack.pop()
sb.append("-\n")
}
if(!stack.isEmpty() && stack.last() > target){
print("NO")
return
}
}
print(sb)
// val e = System.currentTimeMillis()
// println((e-s)/1000.0)
}