프로그래머스 문제 링크 : 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
'알고리즘 > Programmers' 카테고리의 다른 글
[Swift_Programmes] 삼총사 (0) | 2023.12.11 |
---|---|
[Swift_Programmes] 이상한 문자 만들기 (components와 split의 차이점 / enumerated() ) (1) | 2023.12.05 |
[Swift_Programmes] 최대공약수와 최소공배수 ⭐ / 유클리드 호제법, 재귀함수 반복문 (0) | 2023.12.01 |
[Swift_Programmes] 직사각형 별찍기 (0) | 2023.11.30 |
[Swift_Programmes] 행렬의 덧셈 (2) | 2023.11.30 |