포스트

200. 3진법 뒤집기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import Foundation

func solution(_ n:Int) -> Int {
    
    var arr : [Int] = []
    var N : Int = 0
    var answer : Int = 0
    N = n
    
    while N != 0 {
        arr.append(N%3)
        N = N/3
    }
    
    arr = arr.reversed()
    
    for i in arr.indices{
        answer += arr[i] * Int(pow(Double(3),Double(i)))
    }
    
    print(answer)
    
    return answer
}


우선 3으로 나눈 값의 나머지를 배열에 담았다.

그리고 배열을 반대로 바꾸어 주었다. 왜냐하면 인덱스로 접근하기 위해서였다.

그렇게 하고 배열의 값을 pow를 사용해서 곱하여 더했다.

전에 찾아보니 radix를 사용하면 쉽게 진수변환이 가능하다는걸 알았다. 여기에 별도로 적어둔다.

1
2
3
4
5
var sample : Int = 125
var conversion : String = ""
conversion = String(sample, radix: 3)

print(conversion) //11122

기본적으로 string이지만 int로 바꿔 unwrapping해주면 된다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.