본문 바로가기
개발/알고리즘

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

by ISA(류) 2021. 8. 18.

# 문제 원문

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


제한사항

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

입출력 예

n / result

45 7
125 229

입출력 예 설명

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현

45 1200 0021 7
  • 따라서 7을 return 해야 합니다.

입출력 예 #2

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현

125 11122 22111 229
  • 따라서 229를 return 해야 합니다.

# 문제 풀이

입력 받은 n을 3진법으로 변환하고, 그걸 쪼개서 reverse 시켜주고 다시 합친후 2진법으로 변환해주는 간단한 문제.

JS 기준으로 진법변환에 대해서 알아볼 기회다.(나도 처음 접할때는 뭔가했다.) 숫자를 n진법으로 변환하는 방법은

toString(진법)이고, 그렇게 구해진 문자열을 다시 2진법으로 돌리는 방법은 parseInt(문자열, 진법)이라는 점만 기억하면 간단한 문제이다.  

 

# 솔루션 플로우

1. 입력 받은 n을 3진법 문자열로 변환해준다.

2. 변환한 3진법 문자열을 쪼개서 배열로 만들어준다.

3. 얻어진 문자열 배열을 reverse 시킨다.

4. 그렇게 reverse한 문자열을 다시 2진법 숫자로 변환해준다.

5. 얻어진 result를 반환한다.

1. API를 이용한 풀이

function solution(n) {
    return parseInt(n.toString(3).split("").reverse().join(""), 3);
}
반응형