CodingTest

(백준/Kotlin) 10811번 : 바구니 뒤집기

Kua 2021. 10. 18. 10:09

난이도: Bronze 2

프로그래밍 언어: Kotlin

문제명: 바구니 뒤집기

푼일자: 2021년 10월

 

주소: https://www.acmicpc.net/problem/10811

 

문제풀기

1차 제출 코드입니다.

 

import java.util.*

fun main() = with(System.`in`.bufferedReader()) { // 바구니 뒤집기
    val (N, M) = readLine().split(" ").map { it.toInt() }
    val arr = IntArray(N + 1) { it }
    repeat(M) {
        val stack = Stack<Int>()
        val (i, j) = readLine().split(" ").map { it.toInt() }
        for (m in i..j) stack.push(arr[m])
        for (m in i..j) arr[m] = stack.pop()
    }

    print(arr.copyOfRange(1, arr.size).joinToString(" "))
}

 

다른 소스코드에서 참고한 계산법을 적용하여 다시 풀어보았습니다.

fun main() = with(System.`in`.bufferedReader()) { // 바구니 뒤집기
    val (N, M) = readLine().split(" ").map { it.toInt() }
    val arr = IntArray(N + 1) { it }
    repeat(M) {
        var (i, j) = readLine().split(" ").map { it.toInt() }
        while(i < j) {
            val v = arr[i]
            arr[i++] = arr[j]
            arr[j--] = v
        }
    }

    print(arr.copyOfRange(1, arr.size).joinToString(" "))
}

 

 

드라마틱 하지는 않지만 효과는 있습니다.

반응형