이진 변환 반복하기
s의 0을 제거 -> 0이 제거된 s의 길이를 2진법으로 변환 -> s가 1이 될때까지 반복 -> 반복한 횟수와 제거된 0개수를 반환
filter를 이용해 0을 제거하고 길이를 구해 원래길이와 빼줘 제거한 0의 개수를 구해 더한다. 그 후에 toString(2)을 이용해 2진법으로 변환후 count를 세주고 최종 제거된 0의 개수와 반복된수 cnt를 반환해준다.
나의코드
class Solution {
fun solution(s: String): IntArray {
var answer: IntArray = intArrayOf()
var sConv = s
var cnt = 0
var remove = 0
while(sConv != "1"){
var sLength = sConv.filter{it != '0'}.length
remove += sConv.length - sLength
sConv = sLength.toString(2)
cnt++
}
return intArrayOf(cnt, remove)
}
}
다른사람의 코드
class Solution {
fun solution(s: String): IntArray {
var copiedS = s
var removedZero = 0
var count = 0
while (copiedS != "1") {
removedZero += copiedS.replace("1", "").count()
copiedS = Integer.toBinaryString(copiedS.replace("0", "").count())
count++
}
return intArrayOf(count, removedZero)
}
}