IOS/Swift Algorithm Level 1

Swift. 3진수 뒤집기

 문제.

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.


제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

import Foundation

func solution(_ n:Int) -> Int {
	var str = String(n, radix: 3)
	var str2: String = ""
	for i in str.reversed() {
   		str2 += String(i)
	 }
	return Int(str2, radix: 3)!
}

1. 진수 변환만 알고 있다면 간단하게 풀수 있는 문제였고, 숫자를 문자열로 변환할때는 옵셔널 타입이 아닌 문자열 타입으로 나왔지만

2. 애초에 표현식이 String(숫자, radix: 진수n) 이라서 Int(문자열, radix: 진수n)을 하면 옵셔널이 리턴되어 나왔다. 

3. 따라서 마지막 리턴값에 ! 를 붙여줘야 오류가 나지않는다.

4. 잠깐 해맷던 포인트는 radix: n n의 숫자를 변환하려고 하는 진법의 표현이라고 생각해서 문제가 10진법 -> 3진법 -> 10진법 이여서 처음에 3진법 변환하고 리턴값 radix10을 넣으니까 자꾸 틀렸다고 나와서 해매었다. 
여기서또 하나를 배웟다 ㅎㅎ