https://www.acmicpc.net/problem/1874
풀이
package org.techtown.part0.kotlin.part2.solvedac
import java.util.*
fun main() {
val s = Scanner(System.`in`)
val n = s.nextInt() //입력
var tmp = 0
var remember_num = 0
val stack = Stack<Int>() // 스택
var savestr = arrayListOf<String>() //문자열 저장
for (i in 0..n - 1) {
tmp = s.nextInt() // 숫자 입력 받기
if (remember_num < tmp) { // 기억해야되는 숫자보다 입력받은 숫자가 크다면
for (j in remember_num + 1..tmp) { // 기억하는숫자+1 tmp까지 반복문 수행
stack.push(j) // 스택에 넣기
savestr.add("+") // 문자 추가
}
remember_num = tmp // 기억해야되는 숫자 tmp로 초기화
} else if (stack.peek() != tmp) { // stack의 top을 peek 한 숫자와 tmp가 다르다면
println("NO") // 수열을 만들 수 없음
return
}
stack.pop() // if 문 수행후 pop, 문자 추가
savestr.add("-")
}
savestr.forEach { (println(it)) }
}
'코딩테스트 준비(kotlin) > 자료구조' 카테고리의 다른 글
[프로그래머스 kotlin] 다리를 지나는 트럭 (0) | 2024.07.09 |
---|---|
[프로그래머스 kotlin] 롤케이크 자르기 (0) | 2024.07.01 |
[프로그래머스 kotlin] 프로세스 (0) | 2024.06.24 |
[프로그래머스 kotlin] 기능개발 (0) | 2024.06.23 |
[프로그래머스 kotlin] 괄호 회전하기 (0) | 2024.06.18 |