728x90
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n | return |
45 | 7 |
125 | 229 |
입출력 예 설명
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
n(10진법) | n(3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
n(10진법) | n(3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
풀이 [ 메모리: 16,894kb, 최대시간: 0.1ms ]
func solution(_ n:Int) -> Int {
let ternaryNum = String(n, radix: 3)
return Int(String(ternaryNum.reversed()), radix: 3)!
}
다른 풀이 [ 메모리: 16,894kb, 최대시간: 0.11ms ]
import Foundation
func solution(_ n:Int) -> Int {
var n = n
var ternaryNum = ""
// 3진수 변환
while n != 0 {
ternaryNum = String(n % 3) + ternaryNum
n /= 3
}
// 3진수 반전
var reverseNum = Int(String(ternaryNum.reversed())) ?? 0
var result = 0
var count = 0
// 3진수를 10진수로 변환
while reverseNum != 0 {
result += (reverseNum % 10) * Int(pow(Double(3), Double(count)))
reverseNum /= 10
count += 1
}
return result
}
반응형
'🐣 알고리즘' 카테고리의 다른 글
[프로그래머스] Swift - [1차] 다트게임 (LV.1) (0) | 2023.06.01 |
---|---|
[프로그래머스] Swift - 두수의 합(LV.0) (0) | 2023.05.31 |
[프로그래머스] Swift - 이진 변환 반복하기(LV.2) (0) | 2023.05.29 |
[프로그래머스] Swift - 최대공약수와 최소공배수(LV.1) (0) | 2023.05.28 |
[프로그래머스] Swift - 숫자 문자열과 영단어(LV.1) (0) | 2023.05.27 |
댓글