리코딩 : 알고리즘

5. 프로그래머스 - 3진법뒤집기

BreezeBm 2021. 9. 15. 13:30

1. 문제

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

 

제한사항

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

입출력 예

n result
45 7
125 229

2. 나의 풀이

function solution(n) {
    let answer;
    answer = n.toString(3).split("").reverse().join("")
    return parseInt(answer, 3)
}

문제를 보고 이렇게 생각을 했다.

- n을 받아서 3진법으로 바꾼다. 
- 3진법으로 바꾼 값을 앞뒤로 반전 시킨다. 
- 10진 법으로 다시 표현한다. 

 

생각을 해보면 필요한 메서드들은 이미 다 구현이 되어있다. 

- Number.toString(2~36사이의 정수) : 괄호안에 있는 숫자의 범위중에 입력하면 원하는 진법으로 문자열을 반환한다.

- split() : reverse()를 쓰기 위해 문자열을 배열로 만들어야 했다. 그 때 필요한 메서드가 split이 었다. 

- reverse() : 배열을 만들어서 앞뒤로 반전 시킬 때 사용했다.

- join() : 앞뒤 반전이 된, 하나하나 문자열이 들어있는 배열을 합치기 위해 필요했다.

- parseInt(문자열, 3) : 이 메서드에 들어가는 문자열 인자를 분석해서 정수로 반환한다. 문제는 3진법을 분석해서 10진법으로 반환해야했다. 

 

이번 문제는 메서드들을 찾아보고, 조금이나마 공부를 한 번 더할 수 있었다. 생각보다 많은 메서드들이 구현이 되어있었다.

 

공부공부...