[JavaScript] 프로그래머스 3진법 뒤집기 / 진수 변환

Gaeun·2022년 11월 21일

프로그래머스 Lv.1

목록 보기
4/11

3진법 뒤집기

문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

나의 풀이

function solution(n) {
  const trinary = n.toString(3);
  const triReverse = trinary.split("").reverse().join("");

  return parseInt(triReverse, 3);
}
  1. toString(3)을 이용하여 10진수를 3진수로 변환하고
  2. reverse()를 이용하여 앞뒤 반전시키고
  3. parseInt()를 이용하여 다시 10진수로 변환한다.

다른 사람의 풀이

const solution = (n) => {
    return parseInt([...n.toString(3)].reverse().join(""), 3);
}

위 코드는 spread syntax를 사용하여 훨씬 짧게 작성되었다. 이렇게 작성하면 코드의 길이도 줄일 수 있고 가독성도 높일 수 있어 나도 이렇게 생각할 수 있도록... 많은 문제를 풀어봐야겠다.

진수 변환 (n진수 → n진수)

10진수 → n진수

toString()

  • toString() 은 문자열을 반환하는 object의 대표적인 방법이지만 기수(radix)를 매개변수로 취할 시에는 10진수를 다른 진수로 변환할 수 있다.
  • 기수의 값은 최소 2부터 36까지 가능하다.
  • 반환되는 값은 Number가 아닌 String이다.
let baseTenInt = 10;

// 10진수 → 2진수
console.log(baseTenInt.toString(2)); 	// "1010"
// 10진수 → 3진수
console.log(baseTenInt.toString(3)); 	// "101"
// 10진수 → n진수
console.log(decimal.toString(n));

console.log(typeof baseTenInt.toString(2));	// "string"

n진수 → 10진수

parseInt(string, radix)

  • string: 파싱할 값. 문자열이 아닌 경우 ToString 추상 연산을 사용해 문자열로 변환한다. 문자열의 선행 공백은 무시한다.
  • radix (Optional): string의 진수를 나타내는 2부터 36까지의 정수. Number 자료형이 아닌 경우 Number로 변환된다.
  • 즉, parseInt의 매개변수에는 Number, String 모두 가능하다.
// 2진수 → 10진수
let binary = 1011
console.log(parseInt(binary,'2')); 		// 11
// 3진수 → 10진수
let trinary = "210"
console.log(parseInt(trinary,'3')); 	// 21
// n진수 → 10진수
console.log(parseInt(parameter, n))


// 모두 15를 반환한다. 
parseInt('0xF', 16)
parseInt('F', 16)
parseInt('17', 8)
parseInt(021, 8)
parseInt('015', 10)    // parseInt('015', 8)이었다면 13을 반환
parseInt(15.99, 10)
parseInt('15,123', 10)
parseInt('FXX123', 16)
parseInt('1111', 2)
parseInt('15 * 3', 10)
parseInt('15e2', 10)
parseInt('15px', 10)
parseInt('12', 13)

n진수 → n진수

parseInt(string, n).toString(n)

  • n진수를 10진수로 바꾼 뒤, 10진수를 다시 n진수로 바꾸어 n진수를 n진수로 바꿀 수 있게 된다.
// 2진수 -> 3진수
console.log(parseInt("101101", 2).toString(3));// "1200"
profile
🌱 새싹 개발자의 고군분투 코딩 일기

0개의 댓글