Swift | programmers/Lv1.
[Swift] Lv.1 3진법 뒤집기
iOSDEv
2024. 3. 18. 11:52
Lv.1 3진법 뒤집기
문제

나의 풀이

나는 radix를 사용하여 풀었다
내가 생각했던것 만큼 어렵지 않았던 문제였던것 같다
다만 optional 타입이라 옵셔널 바인딩으로 통하여 !강제로 벗겨내거나 if let을 사용하여야 한다는 점!
다른 사람 풀이
import Foundation
func solution(_ n: Int) -> Int {
// 주어진 정수를 변화하기 위해 n을 복사하여 사용
var n = n
// 변환된 3진수를 저장할 배열을 초기화
var arr: [Int] = []
// n이 0보다 클 때까지 3으로 나눈 나머지를 배열에 추가하고 n을 3으로 나누어 갱신
while n > 0 {
arr.append(n % 3)
n = n / 3
}
// 최종 결과를 저장할 변수를 초기화
var ret = 0
// 변환된 3진수 배열을 순회하면서 각 자리의 값을 10진법으로 변환하여 결과에 더해버림
for i in 1...arr.count {
// 10진법으로 변환된 값을 구하고, 결과에 더함
// pow : 거듭제곱한 값을 계산
ret += arr[i - 1] * Int(pow(3.0, Double(arr.count - i)))
}
return ret
}