문제
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
풀이
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 |