

function solution(n) {
var answer = 0;
const ternaryArray = [];
let compareNumber = 1;
function go() {
if (compareNumber < n) {
compareNumber *= 3;
}
else if (compareNumber === n) {
n -= compareNumber;
ternaryArray.push(1);
let i = 1;
let numberOfZero = 0;
while (i !== compareNumber) {
i *= 3;
numberOfZero += 1;
}
for (let i = 0; i < numberOfZero; i ++) {
ternaryArray.push(0);
}
}
else if (compareNumber > n) {
compareNumber /= 3;
if (compareNumber * 2 <= n) {
n -= compareNumber * 2;
ternaryArray.push(2);
if (n === 0) {
let i = 1;
let numberOfZero = 0;
while (i !== compareNumber) {
i *= 3;
numberOfZero += 1;
}
for (let i = 0; i < numberOfZero; i ++) {
ternaryArray.push(0);
}
}
}
else if (compareNumber <= n) {
n -= compareNumber;
ternaryArray.push(1);
if (n === 0) {
let i = 1;
let numberOfZero = 0;
while (i !== compareNumber) {
i *= 3;
numberOfZero += 1;
}
for (let i = 0; i < numberOfZero; i ++) {
ternaryArray.push(0);
}
}
}
else {
ternaryArray.push(0);
}
}
if (n !== 0) go();
}
go();
let ternaryNumber = 1;
for (let i = 0; i < ternaryArray.length; i ++) {
answer += ternaryArray[i] * ternaryNumber;
ternaryNumber *= 3;
}
return answer;
}
✳️ 풀이 과정 :
1️⃣ 10진법의 수를 3진법의 수로 만드는 함수를 만든다.
3진법의 수를 담을 배열을 만든다.
가장 큰 3의 제곱수부터 차례로 빼주면서 배열에 요소를 추가해서 배열을 완성한다.
const solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
✳️ 풀이 과정 :
...나중에 작성하겠다.
출처 : 프로그래머스 : 3진법 뒤집기
참고 : ParseInt() -Javascript | MDN
ParseInt() 참고
전개구문 -javascript | MDN
Number.prototype.toString() -Javascript | MDN
Array.prototype.reverse() -Javascript | MDN