문제
풀이
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 |