https://school.programmers.co.kr/learn/courses/30/lessons/68935
첫번쨰 방법
- 전통적 수학 진법 구하는 방식으로 3씩 나눠서 나머지를 remains에다 넣어주고, 마지막 남은 몫까지 넣어준 뒤, 각 자리수 * 3의 n제곱의 합을 리턴했다.
- 3**i = Math.pow(3, i)
function solution(n) {
let remains = [];
while(n >= 3) {
remains.unshift(n % 3);
n = Math.floor(n / 3);
}
remains.unshift(n);
return remains.reduce((acc, curr, i) => {
acc += curr * 3**i; // Math.pow(3, i) = 3**i
return acc;
}, 0);
}
두번째
쉽게 진수변환하는 방법을 찾았다 O.O;;
10진수 → n진수
10진수.toString(n) : string
12.toString(2) // 2진수 string타입으로 '1100'
n진수 → 10진수
parseInt(n진수, n)
parseInt(1100, 2) // 2진수에서 10진수로 12
n진수 → m진수
n진수를 10진수로 바꾼뒤 m진수로 변환
parseInt(1100, 2).toString(16); // 2진수에서 16진수로
n을 3진법으로 구한뒤 reverse하고 다시 10진수로 변환
function solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
'알고리즘' 카테고리의 다른 글
[프로그래머스/카카오 블라인드] 실패율 (0) | 2023.06.06 |
---|---|
[프로그래머스/카카오 블라인드] 비밀지도 (0) | 2023.06.06 |
[프로그래머스] 소수찾기 - Math.sqrt(n), Set.size() (0) | 2023.06.06 |
[프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2023.06.02 |
[프로그래머스] 문자열 내 맘대로 정렬하기 (0) | 2023.05.30 |