문제
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
풀이
Queue를 활용해 풀이하면 된다. 먼저 1 ~ num 까지 Queue에 담는다. 이후 whlie문을 통해 한 장은 버리고 한 장은 뒤로 이동시킨다. Queue에 한 장만 남는다면 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()
for(i in 1 .. num) {
queue.add(i)
}
while(queue.size != 1) {
queue.poll()
queue.add(queue.poll())
}
bw.write("${queue.poll()}")
bw.flush()
bw.close()
br.close()
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 2636번: 치즈 - Kotlin[코틀린] (0) | 2023.10.27 |
---|---|
[백준] 1871번: 스택 수열 - Kotlin[코틀린] (0) | 2023.10.26 |
[백준] 2161번: 카드1 - Kotlin[코틀린] (0) | 2023.10.24 |
[백준] 12015번: 가장 긴 증가하는 부분 수열 2 - Kotlin[코틀린] (0) | 2023.10.16 |
[백준] 11053번: 가장 긴 증가하는 부분 수열 - Kotlin[코틀린] (0) | 2023.10.14 |