TIL #40

loci·2024년 6월 9일
0

TIL

목록 보기
38/111


이진 변환 반복하기

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)
    }
}
profile
편리한 개발자

0개의 댓글