프로그래머스 Lv1
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
n | result |
---|---|
45 | 7 |
125 | 229 |
답을 도출하는 과정은 다음과 같습니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
---|---|---|---|
45 | 1200 | 0021 | 7 |
따라서 7를 return 해야 합니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
---|---|---|---|
125 | 1200 | 0021 | 7 |
따라서 229를 return 해야 합니다.
function solution(n) {
let decimal = n;
let ternaryArr = [];
let reversedDecimal = 0;
while(decimal !== 0 ){
ternaryArr.push(decimal%3); // 나머지 -> 3진수
decimal = Math.floor(decimal/3); // 몫 -> 다시 3으로 나눌 값.
};
// while 문 완료 => 3진수(뒤집힌) 완료
// ternaryArr = [ 0, 0, 2, 1 ] 이지만,
// 3^index를 0012(3)에 곱해져야해서, 승수에 맞게 reverse해준다
ternaryArr = ternaryArr.reverse();
ternaryArr.forEach((value, i)=>{
reversedDecimal = reversedDecimal + Math.pow(3,i)*value
})
return reversedDecimal;
}
function solution(n) {
// 3진법으로 바꾸고 -> 뒤집어준다.
const ternary= n.toString(3).split('').reverse().join('');
const answer = parseInt(ternary,3); // 10진법으로 바꿔준다.
return answer
}
구문
numObj.toString( [ radix ] )
매개변수
반환 값
: Number 객체를 명시하는 문자열.
= 자료형은 String이지만, ""안에 숫자가 들어가있는 형태.
: Number.parseInt() 메서드는 문자열을 분석하고 특정 진수를 사용한 정수로 변환해 반환합니다.
parseInt( string, n )