3진법 문자열을 구하는 방법은 다음과 같다.

먼저 어떤 수를 3으로 나눈 나머지를 문자열의 맨 앞에서 저장한다.

그리고 그 어떤 수라는 녀석을 3으로 나눈다.

이것을 '어떤 수'가 0보다 큰 동안 반복하면 끝.

 

그리고 이렇게 구한 3진법 문자열은 따로 뒤집을 필요 없이 앞에서부터 자리 수마다 3의 자리 수 제곱을 곱하면 끝이다.

예를 들어 1200 은 뒤집으면 0021이 되지만 어쨌거나 10진수로 변환해야 하기 때문에, 뒤집을 과정은 생략해도 된다는 뜻이다.

 

 

import Foundation

func solution(_ n:Int) -> Int {
    var answerString = ""
    var number = n
    var answer: Int = 0
    var count:Int = 1
    
    while (number > 0) {
        answerString.insert(contentsOf: "\(number % 3)", at: answerString.startIndex)
        number = number / 3
    }
    
    print(answerString)
    for i in answerString.indices {
        answer += count * Int(String(answerString[i]))!
        count *= 3
    }
    return answer
}

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom