Post

[백준/코틀린] 5430번: AC

골드 5

링크

5430번: AC

풀이

명령어 R은 실제로 배열을 뒤집지 않고, 뒤집힘 여부만 토글하는 방식으로 처리합니다.
입력된 배열을 덱으로 파싱한 뒤, RD 명령을 순서대로 적용해 최종 결과를 출력합니다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
fun main() = repeat(readln().toInt()) {
    val p = readln()
    val x = when (readln().toInt()) {
        0 -> emptyList()
        else -> readln().drop(1).dropLast(1).split(",").map { it.toInt() }
    }
    var r = false
    val deque = ArrayDeque(x)

    p.forEach {
        when (it) {
            'R' -> r = !r
            'D' -> when {
                deque.isEmpty() -> return@repeat println("error")
                r -> deque.removeLast()
                !r -> deque.removeFirst()
            }
        }
    }

    println(
        when (r) {
            false -> deque
            true -> deque.reversed()
        }.joinToString(",", "[", "]")
    )
}

This post is licensed under CC BY 4.0 by the author.