[프로그래머스 LV1] 3진법 뒤집기

Junyoung Park·2022년 8월 30일
0

코딩테스트

목록 보기
595/631
post-thumbnail

1. 문제 설명

3진법 뒤집기

2. 문제 분석

십진법으로 된 일반 자연수를 특정 진수로 만들기. 특정 진법으로 쓴 수를 십진법으로 읽기.

3. 나의 풀이

import Foundation

func solution(_ n:Int) -> Int {
    let convertedNumber = getReversedKnary(n, 3)
    let decimal = calculate(convertedNumber, 3)
    return decimal
}

func calculate(_ number: String, _ K: Int) -> Int {
    var times = 1
    var total = 0
    for digit in number.reversed() {
        total += Int(String(digit))! * times
        times *= K
    }
    return total
}

func getReversedKnary(_ number: Int, _ K: Int) -> String {
    var number = number
    var convertedNumber = ""
    while number > 0 {
        let q = number / K
        let r = number % K
        number = q
        convertedNumber += String(r)
    }
    return convertedNumber
}
profile
JUST DO IT

0개의 댓글