https://www.acmicpc.net/problem/1874
[난이도] Silver3
[유형] 스택
[풀이]
1~n 순서로 무조건 push해야 하므로 for문을 돌면서 일단 push해주고
만약 top이 현재 나와야 하는 수열 값이라면 while문을 돌면서 pop을 해준다.
만약 위 과정을 마치고 스택이 비어있지 않다면 수열을 만들 수 없는 경우이다.
복잡하게 조건을 생각하면서 풀려고 하면 어렵기 때문에 스택의 empty 유무로 판단해야 한다.
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*
import kotlin.collections.ArrayList
fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
var n = readLine().toInt()
val st = Stack<Int>()
val arr = IntArray(n)
for(i in 0..n-1) arr[i]=readLine().toInt()
var idx=0;
var ans=ArrayList<Char>()
for(i in 1..n){
st.push(i)
ans.add('+')
while(!st.empty() && st.peek()==arr[idx]){
st.pop()
ans.add('-')
idx++
}
}
if(!st.empty()) println("NO")
else for(c in ans) println(c)
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver3/1874.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Silver4] 10845 : 큐 (Kotlin) (0) | 2021.05.18 |
---|---|
[BOJ/백준][Silver3] 1406 : 에디터 (Kotlin) (1) | 2021.05.08 |
[BOJ/백준][Bronze1] 9093 : 단어 뒤집기 (Kotlin) (0) | 2021.05.08 |
[BOJ/백준][Silver4] 10828 : 스택 (Kotlin) (0) | 2021.05.08 |
[BOJ/백준][Gold3] 17619 : 개구리 점프 (C++) (0) | 2021.05.08 |