문제
풀이
Queue를 활용해 풀이하면 된다. 먼저 1 ~ num 까지 Queue에 담는다. 이후 while문을 통해 한 장은 버리면서 출력하고 한 장은 뒤로 이동시킨다. 버릴 카드가 없거나 맨 뒤로 이동시킬 카드가 없다면 while문을 종료한다.
코드
import java.util.*
fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val num = br.readLine().toInt()
val queue : Queue<Int> = LinkedList()
val sb = StringBuilder()
for(i in 1 .. num) {
queue.offer(i)
}
while (queue.isNotEmpty()) {
sb.append(queue.poll()).append(' ')
if(queue.isEmpty()) {
break
}
queue.offer(queue.poll())
}
bw.write("$sb")
bw.flush()
bw.close()
br.close()
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 1871번: 스택 수열 - Kotlin[코틀린] (0) | 2023.10.26 |
---|---|
[백준] 2164번: 카드2 - Kotlin[코틀린] (0) | 2023.10.25 |
[백준] 12015번: 가장 긴 증가하는 부분 수열 2 - Kotlin[코틀린] (0) | 2023.10.16 |
[백준] 11053번: 가장 긴 증가하는 부분 수열 - Kotlin[코틀린] (0) | 2023.10.14 |
[백준] 3085번: 사탕 게임 - Kotlin[코틀린] (0) | 2023.10.13 |