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
}
'Algorithm' 카테고리의 다른 글
프로그래머스 - 비밀지도 [Swift] (0) | 2021.06.30 |
---|---|
프로그래머스 - 두 개 뽑아서 더하기 [Swift] (0) | 2021.06.29 |
프로그래머스 - 실패율 [Swift] (1) | 2021.06.27 |
프로그래머스 신규 아이디 추천 [swift] (0) | 2021.06.26 |
프로그래머스 키패드 누르기 [Swift] (0) | 2021.06.26 |
최근댓글