728x90
잘 못 접근 한 코드
function solution(n) {
var answer = 0;
let decimalToTernary = [];
let TernaryToDecimal = [];
// 10진법 > 3진법
while(n > 0) {
let result = (n % 3);
decimalToTernary.push(result);
n /= 3;
}
console.log(decimalToTernary);
// 앞뒤 반전
// 3진법 > 10진법
return answer;
}
결괏값
[
0, 0, 2,
1.6666666666666667, 0.5555555555555556, 0.1851851851851852,
0.0617283950617284, 0.0205761316872428, 0.006858710562414266,
0.0022862368541380885, 0.0007620789513793628, 0.00025402631712645424,
0.00008467543904215141, 0.000028225146347383805, 0.000009408382115794602,
0.000003136127371931534, 0.0000010453757906438446, 3.4845859688128153e-7,
1.1615286562709385e-7, 3.871762187569795e-8, 1.2905873958565983e-8,
4.301957986188661e-9, 1.4339859953962205e-9, 4.779953317987402e-10,
1.5933177726624674e-10, 5.311059242208224e-11, 1.7703530807360748e-11,
5.901176935786916e-12, 1.9670589785956387e-12, 6.556863261985462e-13,
2.1856210873284876e-13, 7.285403624428291e-14, 2.4284678748094305e-14,
... 582 more items
]
단순하게 진법 변환하려고 했더니 javascript는 뭔가 다른 방법이 있나 보다.
위의 경우는 왜 그렇게 되었는지 잘 모르겠다. 추가 공부해야 할 듯..
아래에서 알아보자.
정답 처리된 코드
function solution(n) {
var answer = 0;
// 10진법 > 3진법
// 앞뒤 반전
// 3진법 > 10진법
let reversedNumber = n.toString(3).split('').reverse().join('');
answer = parseInt(reversedNumber, 3);
return answer;
}
알아야하는 내용
numObj.toString([radix]) : 리턴 받고자 하는 진수를 매개변수로 넣으면 된다.
str.split([separator [, limit]) : 주어진 문자열을 separator마다 끊은 부분 문자열을 담은 Array가 반환된다.
separator에는 정규표현식을 받을 수 있음.
a.reverse() : 순서가 반전된 배열을 반환한다.
arr.join([separator]) : 배열의 각 요소를 구분할 문자열을 매개변수로 전달합니다. 생략하면 쉼표로 구분되고, 빈 문자열이면 모든 요소들이 사이에 아무 문자도 없이 연결됩니다.
parseInt(string, radix) : 주어진 string을 분석한 정수, radix를 매개변수로 전달할 수 있습니다.
'알고리즘, 자료구조 > 프로그래머스' 카테고리의 다른 글
프로그래머스/하샤드 수/javascript (0) | 2021.07.08 |
---|---|
프로그래머스/약수의 개수와 덧셈/javascript (0) | 2021.06.30 |
프로그래머스/예산/javascript (0) | 2021.06.29 |
프로그래머스/음양 더하기/javascript (0) | 2021.06.27 |
프로그래머스/로또의 최고 순위와 최저 순위/javascript (0) | 2021.06.26 |