Swift랑 친해지기/programmers 풀기
[프로그래머스] 3진법 뒤집기 (Swift)
데브킹덕
2022. 8. 3. 17:33
https://school.programmers.co.kr/learn/courses/30/lessons/68935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
answer 변수
3진법에서 뒤집어진 수를 10진수로 변환해서 반환할때 사용
result Int형 배열
n을 3으로 반복하여 나누어 나머지를 배열에 넣어 사용할 예정
k 변수
n의 값을 받을 변수
풀이방법
1. n의 값을 받은 k가 3으로 나누어 질때동안 반복하기 위해 while 문 사용
2. 반복하는 동안 k를 3으로 나누었을때 나머지를 j 변수에 값으로 초기화
3. k 를 3으로 나눈 몫을 k값으로 주었음. (나머지를 먼저 계산해야 k값이 변하지 않으므로 순서 중요)
4. j 값 result 배열에 추가
5. 반복문이 끝나면 k를 result 배열에 추가
6. reverse()함수를 이용해서 뒤집어준다.
-> 이유 [0011]일때 3에0승이 1이고 3에 1승이 1이고 3에 2승이 0이고 3에 3승이 0이기때문에
반복문으로 10진법으로 변환할시 3에 0승부터 접근하기 위하여 reverse를 사용함
7. 반복문을이용해서 0부터 result의 count 전까지 반복한다.
result의 인덱스 x 3의 i승 을 answer에 반복하여 더하여 결과를 도출했다.
이떄 pow 함수를 이용해 제곱을 구했다.
pow(_ x: _y:)
주어진 거든제곱으로 거듭난 십진수를 반환
이 작업의 결과에 Decimal유형이 제공할 수 있는 것보다 더 높은 정밀도가 필요한 경우 결과는 반올림 모드를 사용하여 반올림됩니다.
import Foundation
func solution(_ n:Int) -> Int {
var answer = 0
var result = [Int]()
var k = n
while k >= 3 {
let j = k % 3
k = k / 3
result.append(j)
}
result.append(k)
result.reverse()
for i in 0..<result.count{
answer += result[i] * Int(pow(3.0, Double(i)))
}
return answer
}