문제
풀이
음.. 겁나 어려워보이는구만...
일단 10진법을 3진법으로 변환하고
변환한 값을 앞뒤로 반전한 다음
반전된 값을 10진법으로 리턴해라!!
3진법으로 변환하기 위해서는 나머지 값을 계속해서 구해야 하니까
반복문을 사용해야 하고
앞뒤 반전을 해야하니까 reverse 쓰고
10진법으로 다시 변환해야 하니까 3진법을 10진법으로 구하는 로직도 짜야하는군
해보자 해보자!!
function solution(n) {
var answer = 0;
var myRemainder = 0;
var myStringTemp = '';
while(n > 0) {
myRemainder += n % 3; // 나머지
n = parseInt(n / 3); // 몫
myRemainder = myRemainder.toString();
}
let sRemainder = myRemainder;
let bLength = myRemainder.length;
myRemainder = parseInt(myRemainder);
sRemainder = sRemainder.split('').reverse();
for(let i=(bLength-1); i>=0; --i) {
let squareRoot = Math.pow(3, i); // 제곱근
let bNumber = parseInt(sRemainder[i]);
answer += (squareRoot * bNumber);
}
return answer;
}
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
남들 코드 보기 전엔 다 이렇게 하는 줄 알았짘ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
눈물난다 증말...
다른 사람 코드
와 toString, parseInt 메소드에 진법으로 변환해주는 기능이 있네
어이없다.. 허탈하다.. 짜증난다.. 검색해볼걸............................................
※ 객체의 타입에 따른 toString() 메소드
Number.prototype.toString()
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/toString
String.prototype.toString()
Object.prototype.toString()
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
풀이를 해보자면 !
예를 들어 n이 11이라고 가정했을 때,
n.toString(3)으로 11을 3진법으로 나타내서 102가 도출되면
전개연산자로 102를 배열로 변환하면 ["1", "0", "2"]
이걸 reverse 메소드로 순서 바꿔준 다음
다시 join 메소드로 문자열로 바꾸고 parseInt로 3진법 정수로 표현
와 ... 짱이다짱이야...
'Dev > Algorithm' 카테고리의 다른 글
알고리즘 문제 | 프로그래머스 - K번째 수 (0) | 2021.01.21 |
---|---|
알고리즘 문제 | 프로그래머스 - 2016년 (0) | 2021.01.20 |
알고리즘 문제 | 프로그래머스 - 같은 숫자는 싫어 (0) | 2021.01.19 |
알고리즘 문제 | 프로그래머스 - 나누어 떨어지는 숫자 배열 (0) | 2021.01.19 |
알고리즘 문제 | 프로그래머스 - 두 정수 사이의 합 (0) | 2021.01.19 |