진수 변환을 하는 String 으로는 String(value: string, radix: Int) 를 사용하면 되겠습니다
radix 변환을 사용하지 않고 직접 구현한 코드
import Foundation
func solution(_ s:String) -> [Int] {
var tmp = s
var totalCount = 0
var zeroCount = 0
while tmp.count > 1 {
var one = tmp.filter { $0 == "1" }.count
zeroCount += tmp.count - one
var stack: [Int] = []
while one > 0 {
stack.append(one % 2)
one /= 2
}
tmp = stack.map { String($0) }.joined()
totalCount += 1
}
return [totalCount, zeroCount]
}
radix 변환을 사용한 코드
훨씬 깔끔해진 것을 확인할 수 있습니다.
import Foundation
func solution(_ s:String) -> [Int] {
var tmp = s
var totalCount = 0
var zeroCount = 0
while tmp != "1" {
zeroCount += tmp.filter { $0 == "0" }.count
tmp = String(tmp.filter { $0 == "1" }.count, radix: 2)
totalCount += 1
}
return [totalCount, zeroCount]
}
'Algorithm > programmers' 카테고리의 다른 글
프로그래머스 - 피보나치 수 feat. dp (다이나믹 프로그래밍) (0) | 2024.10.16 |
---|---|
프로그래머스 - 다음 큰 숫자 (0) | 2024.10.16 |
프로그래머스 - JadenCase 문자열 만들기 feat. stack (0) | 2024.10.14 |
프로그래머스 - 최솟값 만들기 (0) | 2024.10.13 |
프로그래머스 - 올바른 괄호 (0) | 2024.10.10 |