코딩테스트 | (JavaScript) 프로그래머스 : 3진법 뒤집기
✅문제
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
❕ 제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
🎹📢입출력 예제
✍풀어보기
function solution(n) {
let answer = 0;
let trit = ''
// 3진법 구하기 인수분해
while (n > 0) {
trit = n % 3 + trit
n = parseInt(n / 3)
}
const reverseTrit = trit.split('').reverse()
const length = reverseTrit.length
let pow = 1
// 10진법으로 변환
for (let i = 0; i < length; ++i) {
answer += reverseTrit[length - 1 - i] * pow
pow *= 3
}
return answer
}
쉬운 문제라고 생각했는데, 10진법으로 변환하는 과정에서 깔끔하게 코드를 작성하고싶어서 [length - 1 - i]
라는 순서 규칙 찾는 것도 시간이 좀 걸렸고, Math.pow()를 알고 있었지만, pow를 직접 구현해야지 생각하고 시도했지만 쉬운 것인데도 불구하고 헛짓거리를 했었다. 그래도 재밌었던 문제!
🎈다른 사람의 풀이
const solution = (n) => parseInt([...n.toString(3)].reverse().join(""), 3);
다른 사람의 풀이를 보고.. 자바스크립트의 기본 제공 함수들이 엄청나다는걸 다시 한번 느낀다.. 저렇게 쉽게 진수 표현을 할 수 있다니!!! 자주 썼던 함수인데도 간과하고 있었다 ㅋㅋㅋ
참고 자료 및 사이트 (감사합니다)
Author And Source
이 문제에 관하여(코딩테스트 | (JavaScript) 프로그래머스 : 3진법 뒤집기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@goblin820/코딩테스트-JavaScript-프로그래머스-3진법-뒤집기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)