[프로그래머스] 3진법 뒤집기

Dev.Jo·2022년 1월 26일
0

알고리즘

목록 보기
6/21

레벨 1 문제인 "3진법 뒤집기"를 풀다가 javascript의 진법 다루는 방법을 잘 모른다는 것을 깨달았다.

이 글을 통해 정리하고자 한다.
수학을 통해 직접 계산해서 진법을 표현하는 방법도 있지만, 실제 알고리즘 테스트에서 쉽고 빠르게 사용할 수 있는 메서드 위주로 정리하고자한다

목표

  • 진법 메서드 정리

10진법 -> N진법

Number.toString(N진수)

숫자를 N진수로 변환한 문자열을 반환한다.

const num = 5;
num.toString(2);  // '101'

5.toString(2) // (X) 자료형의 메서드이기 때문에 숫자에서 메서드를 호출 할 수 없다
  • toString() 메서드로 10진수를 N진수로 변환 할 수 있다
  • 변환값은 문자열임에 조심하자

N진법 -> 10진법

parseInt(문자열,문자열의 진수)

| N진법 문자열을 10진수로 변환한다

parseInt(10, 4); // 4
parseInt(12, 3); // 5
parseInt(11, 11); // 5

문제풀이

문제 요구사항을 단계별로 나누어 생각해보자

  1. 숫자 n을 3진법으로 만든다
  2. 뒤집는다
  3. 다시 10진법으로 만든다

10진법 n을 3진법으로 만들기위해 toString()을 이용한다

n.toString(3)

그리고 뒤집기 위해서 배열 메서드인 reverse()를 사용한다.
toString()의 반환값은 문자열이기 때문에, 문자열을 배열로 변환하기 위해 스프레드 연산자를 사용한다

[...n.toString(3)].reverse()

뒤집은 배열을 join("")을 이용해 다시 문자열로 만들어 준다

[...n.toString(3)].reverse().join("")

이제 10진법으로 바꿔주면 된다. N진법의 수를 10진법으로 바꾸기 위해서는 parseInt()를 사용한다

풀이

function solution(n){
	return parseInt([...n.toString(3)].reverse().join(""),3)
}

정리

  1. toString(N)으로 10진법을 N진법으로 변환하자
  2. reverse()로 뒤집은 배열을 만들자
  3. parseInt(문자열,문자열의 진수)로 N진수 수를 10진수로 변환하자
profile
소프트웨어 엔지니어, 프론트엔드 개발자

0개의 댓글