문제.
자연수 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을 넣으니까 자꾸 틀렸다고 나와서 해매었다.
여기서또 하나를 배웟다 ㅎㅎ
'IOS > Swift Algorithm Level 1' 카테고리의 다른 글
Swift. 문자열 다루기 기본 (0) | 2020.10.15 |
---|---|
Swift. 문자열 내림차순으로 배치하기 (0) | 2020.10.14 |
Swift. 문자열 내 p와 y의 개수 (0) | 2020.10.12 |
Swift. 문자열 내 마음대로 정렬하기 (0) | 2020.10.10 |
Swift. 나누어 떨어지는 숫자 배열 (0) | 2020.10.09 |