-
Lv1)JS-3진법 뒤집기공부/프로그래머스 2022. 1. 7. 21:33
느낀점
3진법을 어떻게하면 직접 만들 수 있을까를 먼저 생각해보았다. 그러다 공식문서를 보았고 2진법,3진법... 다른 진법을 봐도 변환이 어떻게 이루어져야 될지 감이 잡히지 않았다. 그래서 검색을 통해서 10진법을 2진법으로 만드는 내장함수를 알게 되었고 그 이후 부터는 쉽게 풀 수 있게 되었다. 내장함수를 이용하지 않고는 어떻게 풀어야 하는지 정리가 되지 않지만 다른 사람이 푼 풀이에서는 내장 함수를 이용하지 않고 풀었는데 정말.... 대단하다.....
그리고 Math.log를 알게 되었는데 이는 밑을 10과 2로만 받을 수 있어서 사용하는데 제한적인거 같다.
10진법에서 다른 진법으로 변환시 toString을 이용할 수 있다는 것을 확인하는 시간이 되었다.
내가 푼 방법
function solution(n) { //10진수를 다른 진수로 변환 시키려고 할때는 toString(다른진수) let reverseNum = n.toString(3).split('').reverse().join(""); return parseInt(reverseNum, 3); }
다른 방법(내장함수 사용 X)
function solution(n) { const answer = []; while(n !== 0) { answer.unshift(n % 3); n = Math.floor(n/3); } return answer.reduce((acc,v,i) => acc + (v * Math.pow(3, i)),0); }
3진법은 0,1,2를 활용하기 때문에 3으로 나누었을때 나머지를 answer 배열에 넣어주고 floor메서드를 이용해서 소수점자리를 지우고 내려주면서 배열에 숫자를 정리한다고 보면된다. 후에 제곱을 이용해서 각자리수에 맞게 곱해주면 되는거 같다.
reference
'공부 > 프로그래머스' 카테고리의 다른 글
Lv1)JS-최소직사각형 (0) 2022.01.11 Lv1)JS-예산 (0) 2022.01.08 Lv1)JS-약수의개수와덧셈 (0) 2022.01.07 Lv1)JS-실패율 (0) 2022.01.06 Lv1)JS-포켓몬 (0) 2022.01.05