[백준] 막대기 (1094)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 X가 주어진다. X는 64보다 작거나 같은 자연수이다.
» 출력
문제의 과정을 거친다면, 몇 개의 막대를 풀로 붙여서 Xcm를 만들 수 있는지 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
23 | 4 |
32 | 1 |
64 | 1 |
48 | 2 |
문제 풀이1
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
var x = readLine().toInt()
val arr = intArrayOf(64, 32, 16, 8, 4, 2, 1)
var count = 0
arr.forEach {
if (x >= it) {
x -= it
count++
}
}
println(count)
}
문제 풀이2
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val x = readLine().toInt()
println(
// example x == 23
// 23.toString(2) -> "10111"
// "10111".count { it == '1' } -> 4
x.toString(2).count { it == '1' }
)
}