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

개발잘하기프로젝트·2020년 12월 10일
0
post-thumbnail

🤔 문제

프로그래머스 - 3진법 뒤집기
월간 코드 챌린지 시즌1

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

❗️ 제한

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

💡 접근

먼저 자연수 n을 3진수로 바꾸기 위해 toString()메서드를 이용했다. 3진수로 바뀐 값에 대해서 스프레드 문법을 이용해 배열에 담고 reverse()메서드를 이용해 순서를 뒤집어주었다. join()메서드를 이용해 다시 하나의 문자열로 합치고, parseInt() 빌트인 객체를 이용해 10진수로 리턴했다.

문제와 직접적인 관련은 없지만 parseInt()는 부동소수점 실수에 대해서는 리턴하지 않는다. 예를 들어 parseInt(4.3, 10)4를 리턴한다. 마치 소수점을 잘라내기 위한 방법으로 Math.floor()와 같은 효과를 주는 것 같지만 MDN 문서에 따르면 Math.floor()의 대체품으로 사용해서는 안된다고 명확하게 말하고 있다. 4.3을 그대로 리턴하고 싶으면 parseFloat(4.3, 10)이 있다.

parseInt()는 단순히 '문자열을 숫자로 바꾸어주는 문법이다' 개념 정도로만 생각하고 사용했었다. 하지만 생각하는 것 이상으로 단순하지 않은 문법이라는 것을 알게 되었다. 아래의 참고에 MDN 문서 링크를 걸어두었다.

🧑🏻‍💻 코드

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

solution(45); // 7

📝 참고

MDN - parseInt()
MDN - parseFloat()
MDN - Number.prototype.toFixed()

Number.prototype.toFixed()

toFixed()메서드는 숫자를 고정 소수점 표기법으로 표기해 반환한다. 반환된 수는 문자열타입이다.

profile
🏠 ☕️ 🎞 🌿 + 🧑🏻‍💻

0개의 댓글