알고리즘/프로그래머스
프로그래머스 - 3진법 뒤집기
leeyuno
2021. 1. 13. 17:44
programmers.co.kr/learn/courses/30/lessons/68935
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
처음 문제를 푼 방법은 단순히 입력 받은 숫자를 3진법으로 변환 그 후에 역순으로 정렬하고 다시 10진법으로 변환 하는 방법으로 풀었다.
func solution(_ n:Int) -> Int {
var number = n
var string = ""
var array = [Int]()
while number >= 3 {
array.insert(number % 3, at: array.count)
string.insert(contentsOf: String(number % 3), at: string.endIndex)
number = number / 3
}
array.insert(number, at: array.count)
var result = 0
for i in (0 ... array.count - 1).reversed() {
result += NSDecimalNumber(decimal: pow(3, i)).intValue * array[array.count - 1 - i]
}
return result
}
후에 검색을 통해 진법 계산을 하는 방법을 찾은 후에 다시 푼 방법
func solution(_ n:Int) -> Int {
let decial = String(n, radix: 3)
let result = Int(String(decial.reversed()), radix: 3)!
return result
}