본문 바로가기

Algorithm

[Swift] string radix initializer

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