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
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Silver2] 4963 : 섬의 개수 (Kotlin) (0) | 2021.07.10 |
---|---|
[BOJ/백준][Silver2] 4948 : 베르트랑 공준 (Kotlin) (0) | 2021.07.10 |
[BOJ/백준][Silver3] 2003 : 수들의 합2 (Kotlin) (0) | 2021.07.10 |
[BOJ/백준][Gold5] 6198 : 옥상 정원 꾸미기 (C++) (0) | 2021.06.24 |
[BOJ/백준][Gold5] 2981 : 검문 (C++) (0) | 2021.06.24 |