본문 바로가기
알고리즘/프로그래머스

[자바스크립트/알고리즘] 프로그래머스- 3진법 뒤집기

by 프론트엔드 지식백과 2021. 1. 25.

[문제]

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

 

 

[제한 사항]

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

 

 

[나의 풀이]

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

n(예시: 125)을 3진법 문자열로 만든 다음(11122) split으로 하나씩 나누었다.(['1', '1', '1', '2', '2'])

그리고 이 배열을 reverse()를 이용해서 뒤집고(['2','2','1','1','1']), join으로 다시 문자열로 합쳤다.(22111)

parseInt를 이용하여 다시 10진법으로 변환하여 값을 반환했다.

 

[다른 사람의 풀이]

function solution(n) {
    let answer = [...n.toString(3)]
    console.log(answer);
    return parseInt(answer, 3);
}

[...n.toString(3)]으로 n.toString(3).split("")의 역할을 다 했다!

Spread Syntax를 여기서 사용할 생각조차 못했는데 새로운 솔루션을 알게 되었다..

 

 

Spread syntax (...) - JavaScript | MDN

Spread syntax (...) allows an iterable such as an array expression or string to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected, or an object expression to be expanded in places where ze

developer.mozilla.org

 

728x90