난이도: 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(" "))
}
드라마틱 하지는 않지만 효과는 있습니다.
반응형