반응형
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예nresult
45 | 7 |
125 | 229 |
입출력 예 설명
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
나의 문제 풀이
import Foundation
func solution(_ n:Int) -> Int {
var result = ""
result = String(n, radix: 3)
if let reversedNum = Int(String(result.reversed()), radix:3) {
return reversedNum
} else {
return 0
}
}
String에 있는 메서드를 이용해 3진법으로 변환하고 reversed를 사용해서 뒤집은 다음 숫자로 변환하고 있습니다
다른 사람의 풀이
import Foundation
func solution(_ n:Int) -> Int {
var n = n
var arr: [Int] = []
while n > 0 {
arr.append(n%3)
n = n / 3
}
var ret = 0
for i in 1...arr.count {
ret += arr[i-1] * Int(pow(3.0, Double(arr.count-i)))
}
return ret
}
3진법으로 변화하기 위해서 3을 나눈 나머지를 이용해서 진법을 만든 후
pow 메서드를 이용해서 제곱값의 곱과 arr[i-1]의 곱을 더해줍니다
반응형
'Programmers > LV1.' 카테고리의 다른 글
Lv1 | Swift - 크기가 작은 부분 문자열 (0) | 2024.07.16 |
---|---|
Lv1 | Swift - 예산 (0) | 2024.07.12 |
Lv1 | Swift -최대공약수와 최소공배수 (0) | 2024.07.10 |
Lv1 | Swift - 행렬의 덧셈 (0) | 2024.07.04 |
Lv1 | Swift - 문자열 다루기 기본 (0) | 2024.07.03 |