코딩 테스트/프로그래머스
[Swift] 프로그래머스(lv.1) 31 - 3진법 뒤집기
말차프라푸치노
2022. 3. 11. 16:03
3진법 뒤집기
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
문제 풀이
입력받은 n을 3으로 나누며 배열에 추가해준다. 그러면 3진법의 뒤에서 부터 저장하는게 된다.
배열을 reduce 함수를 통해 3진법 int 타입으로 바꿔준다.
+ 이해가 잘 안될경우 10 진법으로 생각해보면 쉽다.
코드
내 코드
import Foundation
func solution(_ n:Int) -> Int {
var num = n
var arr:[Int] = []
while(num > 0 ){
arr.append(num % 3)
num = num / 3
}
return arr.reduce(0) {$0 * 3 + $1}
}
다른 사람 코드
import Foundation
func solution(_ n:Int) -> Int {
let flipToThree = String(n,radix: 3)
let answer = Int(String(flipToThree.reversed()),radix:3)!
return answer
}
String(_:radix:) 메소드를 사용했다. 이 메소드를 쓰면 쉽게 진법을 바꿀 수 있다.
Int(_:radix:) 를 바로 사용해야 할 것 같지만 첫 번째 파라미터가 String 타입이다.
이렇게 하나 더 배워간다.
후기
진법 문제가 어려우면 10진법으로 생각하자 -> 숫자만 바꿔주면 된다.
String(_:radix:) 를 사용해서 쉽게 진법을 관리할 수 있다.