Swift radix 구현 방법
보통 아래와 같이 함수를 구현한다.
func radixTo(_ radix: Int, with number: Int) -> String {
var result: String = ""
var number: Int = number
while number > 0 {
result.append("\(number % radix)")
number /= radix
}
return String(result.reversed())
}
let number = 10
let radix2: String = radixTo(2, with: 10) // 1010
let radix3: String = radixTo(3, with: 10) // 101
하지만 swift는 String의 initializer로 radix 기능을 제공한다.
String(_ value: T, radix: Int = 10)
let radix2_2: String = String(number, radix: 2)
let radix3_3: String = String(number, radix: 3)
간단한 알고리즘 문제
이 문제는 이진수로 바꾸어 1의 개수를 구하는 문제다. (정확히 이 문제는 아니지만, 이게 핵심 로직임)
String의 radix initializer를 사용해볼 수 있다.
func solution(_ n:Int) -> Int {
var n = n
let oneCount: Int = String(n, radix: 2).filter { $0 == "1" }.count
while true {
n += 1
if String(n, radix: 2).filter({ $0 == "1" }).count == oneCount {
return n
}
}
return 0
}
'Algorithm' 카테고리의 다른 글
[Programmers] 삼각 달팽이 (Level 2) (1) | 2022.09.29 |
---|---|
[Programmers] 수식 최대화 (Level 2) (0) | 2022.09.26 |
[Programmers] 위장 (0) | 2022.03.30 |
[Programmers] n진수 게임 (0) | 2022.02.06 |
[Programmers] 거리두기 확인하기 (0) | 2022.02.04 |