코딩테스트
[JS] 월간 코드 챌린지 시즌1 > 3진법 뒤집기
차차한
2022. 8. 12. 15:36
자연수 n이 매개변수로 주어집니다.
n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
function solution(n) {
var answer = n.toString(3);
const arr = [...answer].reverse();
return parseInt(arr.join(""), 3);
}
내 문제 풀이
n을 먼저 3진법으로 바꾸기 위해 toString(3)을 사용했다.
3진법 수를 앞뒤로 뒤집어해서 reverse()를 사용하려 했는데 이 함수는 배열에서만 사용가능하다해서 전개연산자를 이용해 answer를 배열에 담아주고 리버스했다.
이걸 다시 10진법으로 바꿔야 하는데 arr이 지금 배열 상태로 ["0","0","2","1"] 처럼 들어가있기 때문에 join으로 배열 요소의 값을 하나로 합쳐줬다.
그 후에 parseInt로 10진법으로 바꿔줬다!
10진법에서 n진법으로 변환할 때는 toString(n)이면 되지만
n진법에서 10진법으로 변환할 때는 parseInt( 숫자, n)처럼 써줘야 값이 변환된다~!
const solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
다른 사람 문제 풀이
화살표 함수를 이용해서 간단하게 작성해놨다.
문제에 쓰인 함수는 똑같은데 이렇게 표현할 수도 있는 것을 배우게 됐다.
