💻 프로그래머스: 3진법 뒤집기 - 문제
import Foundation
func solution(_ n:Int) -> Int {
return(tertodeci(ternaryrev(n)))
}
func ternaryrev(_ x: Int) -> [Int] {
var num = x
var trev: [Int] = []
while true {
trev.append(num%3)
num = num / 3
if num == 0 {
return trev
}
}
}
func tertodeci(_ m: [Int]) -> Int{
let tarnary = m
let cnt: Int = m.count
var deci: Int = 0
for i in 1...cnt {
deci += tarnary[i-1] * Int(pow(3.0, Double((cnt-i))))
}
return deci
}
풀어서 답이 맞긴 맞았는데, 다른 사람의 풀이를 보니 Swift에 진법 처리하는 이니셜라이저가 있었다.
String(radix:) 이니셜라이저는 주어진 정수를 기반으로 다른 진법의 문자열 표현을 생성할 수 있게 해줍니다. 이 기능은 특히 정수를 2진수, 8진수, 16진수 또는 다른 원하는 진법의 문자열로 변환할 때 유용합니다. radix 매개변수는 목표 진법을 지정하며, 2에서 36까지의 값을 사용할 수 있습니다.
사용 예시
let decimalNumber = 255
let binaryString = String(decimalNumber, radix: 2) // "11111111"
let hexString = String(decimalNumber, radix: 16) // "ff"
let octalString = String(decimalNumber, radix: 8) // "377"
String(radix:), Int(radix:) 모두 가능하다.
import Foundation
func solution(_ n: Int) -> Int {
let ternary = String(n, radix: 3)
let reversedTernary = String(ternary.reversed())
return Int(reversedTernary, radix: 3)!
}
이거 문제 이해부터 힘들었어요 ㅋㅋ radix라는게 있군요👍🏻