https://www.acmicpc.net/problem/10773

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

 

 

 

[난이도] Silver4
[유형] 스택

[풀이]
stack을 이용해 0이면 pop, 아니면 push를 해주고 스택에 남은 모든 원소를 더하면 된다.

 

import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*
fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
    var k = readLine().toInt()
    var st = Stack<Int>()
    while(k-->0){
        var ip = readLine().toInt()
        when(ip){
            0 -> st.pop()
            else -> st.push(ip)
        }
    }
    var ans = 0
    while(!st.empty()) ans += st.pop()
    println(ans)
}

 

https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver4/10773.cpp

+ Recent posts