알고리즘/Programmers
[Swift_Programmes] 3진법 뒤집기
YEN_
2023. 12. 4. 09:37
프로그래머스 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/68935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 내가 제출한 풀이
import Foundation
func solution(_ n:Int) -> Int {
let value = String(n, radix: 3)
let reversedValue = String(value.reversed())
let result = Int(reversedValue, radix: 3)!
return result
}
💡 풀이 과정
- 주어진 n을 3진법으로 변환한다
- 앞뒤로 뒤집는다
- 다시 10진법으로 변환한다
진수 바꾸기
init( String 타입의 문자열, radix: 바꿀 진수 )
https://developer.apple.com/documentation/swift/int/init(_:radix:)
init(_:radix:) | Apple Developer Documentation
Creates a new integer value from the given string and radix.
developer.apple.com
2진법 <-> 10진법이라면
String( "45", radix: 2 ) -> 1200
String( "1200", radix: 2 ) -> 45
이 문제에서는 3진법으로 바꿔줘야 하므로 radix 값을 3으로 정해서 계산한다.
숫자로 바꿀 수 없는 문자일때 nil로 처리되기 때문에 결과값이 옵셔널로 반환된다
따라서, Int 형으로 반환할 때는 옵셔널 추출을 해주어야 한다.
n == 45
let value = String(n, radix: 3)
// 1200
let reversedValue = String(value.reversed())
// 0021
// 옵셔널 추출
let result = Int(reversedValue, radix: 3)!
// 7