[문제]
https://www.acmicpc.net/problem/1874
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
[코드]
import java.io.*
import java.lang.StringBuilder
import java.util.*
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = br.readLine().toInt()
val sb = StringBuilder()
val stack = Stack<Int>()
var cur = 1
for(i in 0 until n) {
val cmd = br.readLine().toInt()
while(cur<=cmd){
stack.push(cur)
sb.append("+\n")
cur += 1
}
if (cmd == stack.last()) {
stack.pop()
sb.append("-\n")
}
else {
println("NO")
return
}
}
bw.write(sb.toString())
bw.flush()
bw.close()
}
[풀이]
cur을 통해 1부터 입력값까지 증가하는 연산을 보여준다.
처음 4를 입력받으면 1부터 4까지 네 번의 +연산이 필요하므로 while 문을 통해 cur가 4가 될 때까지
출력값에 +를 추가하다가 4가 되면 - 연산을 추가하여 값을 뽑아낸다.
입력값이 cur보다 작을 때 스택의 최상단이 입력값과 같으면 -연산을 하지만
같지 않으면 NO를 출력하여 끝낸다.
Github : https://github.com/eshc123/2021AlgorithmStudy/blob/main/src/main/PS/baekjoon/1874.kt
'Algorithm and PS > 백준(Kotlin)' 카테고리의 다른 글
| 백준 - 6198 옥상 정원 꾸미기 (코틀린) (0) | 2021.12.30 |
|---|---|
| 백준 - 3273 두 수의 합 (코틀린) (0) | 2021.12.30 |
| 백준 - 10773 제로 (코틀린) (0) | 2021.05.24 |
| 백준 - 10828 스택 (코틀린) (0) | 2021.05.24 |
| 백준 - 1406 에디터 (코틀린) (0) | 2021.05.23 |
댓글