반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스 - 3진법 뒤집기 문제를 풀었습니다.
목차
Github
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/68935
풀이
3진법을 정석대로 구해서 문제를 통과했는데요.
Swift의 놀라운 진법 처리 방식이 있더라고요.
바로 String에서 radix 인자를 통해 진법 변환을 해준다는 겁니다.
let flipToThree = String(1000, radix: 3)
위 코드처럼 작성하면 1000을 3진수로 변환해주는 것이죠.
String으로 변환하는 것이기 때문에 타입은 당연히 String입니다.
이를 뒤집어서 다시 진법 변환을 한 뒤 Int로 변환하면 됩니다.
추가로 3진법에 관한 기사도 찾을 수 있었습니다.
참고하면 좋을 것 같아 공유합니다.
전체 코드
import Foundation
func solution(_ n:Int) -> Int {
let flipToThree = String(n, radix: 3) //holy...
let result: Int = Int(String(flipToThree.reversed()), radix: 3)!
//반복문 풀이
// var arr: [Int] = []
//
// var number = n
// while number != 0 {
// arr.append(number % 3)
// number /= 3
// }
//
// (0..<arr.count).forEach {
// let powNum = Int(pow(3.0, Double($0)))
// result += (powNum * arr[arr.count - 1 - $0])
// }
return result
}
let n = 45
print(solution(n))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형