Programming/Algorithm
[Kotlin] λ°°μ€ 3460 - μ΄μ§μ
Space_Jin
2024. 10. 19. 17:14
728x90
λ°μν
λ¬Έμ
μμ μ μ nμ΄ μ£Όμ΄μ‘μ λ, μ΄λ₯Ό μ΄μ§μλ‘ λνλμ λ 1μ μμΉλ₯Ό λͺ¨λ μ°Ύλ νλ‘κ·Έλ¨μ μμ±νμμ€. μ΅νμ λΉνΈ(least significant bit, lsb)μ μμΉλ 0μ΄λ€.
첫째 μ€μ ν μ€νΈ μΌμ΄μ€μ κ°μ Tκ° μ£Όμ΄μ§λ€. κ° ν μ€νΈ μΌμ΄μ€λ ν μ€λ‘ μ΄λ£¨μ΄μ Έ μκ³ , nμ΄ μ£Όμ΄μ§λ€. (1 ≤ T ≤ 10, 1 ≤ n ≤ 10^6)
νμ΄
1. 2μ§μμ κ²½μ°, 2λ‘ λλ λλ¨Έμ§κ° μ‘΄μ¬νλ€λ©΄(λλ¨Έμ§λ 1) ν΄λΉ μμΉ 1μ κ°μ΄ μ¨λ€.
2. ν μ€νΈ μΌμ΄μ€ λΉ nμ κ°μ 2λ‘ κ³μ λλλ€λ©΄ μ΅λ log(n)λ² μνν΄μΌνλ€. O(TlogN)
3. Tλ μ΅λ 10 nμ μ΅λκ°μ 10^6μΌλ‘ μ΄λ―λ‘ μ΅λ log(10^7)μ μκ°λ³΅μ‘λλ₯Ό κ°μ§λ―λ‘ 2λ‘ κ³μ λλλ λ°©λ²μ μ±ννλ€.
μμ€ μ½λ
import java.util.*
fun main() = with(Scanner(System.`in`)) {
val T = nextInt() // ν
μ€νΈμΌμ΄μ€ μ
// λ°λ³΅
for(i in 1..T){
val N = nextInt() // ν
μ€νΈμΌμ΄μ€
module(N) // λͺ¨λ νΈμΆ
}
}
// μ΄μ§μλ₯Ό κ³μ°νκ³ μΆλ ₯νλ λͺ¨λ
fun module(N:Int) {
val sb = StringBuilder() // μΆλ ₯μ© StringBuilder
var n = N // λλκ°(λͺ«)
var c = 0 // νμ¬ μ리 μΈλ±μ€(1μ μλ¦¬κ° 0)
while(n > 0){
// 2μ λλ¨Έμ§κ° 1μ΄λΌλ©΄, ν΄λΉ μ리λ₯Ό 1μ΄ λλ―λ‘ μμΉλ₯Ό μ μ₯
if(n % 2 == 1){
sb.append(c)
sb.append(" ")
}
// λ€μ쑰건 μ€μ
n /= 2 // 2λ‘ λλ λͺ«
c++ // λ€μ μ리(μΈλ±μ€)μ¦κ°
}
println(sb)
}
728x90
λ°μν