문제
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 100,000,000 이하인 자연수입니다.
나의 풀이
function solution(n) {
// n (3진법) -> 뒤집음 -> 10진법
return parseInt(n.toString(3).split("").reverse().join(""), 3);
}
정확도 테스트 결과
다른 풀이
1. 간단한 풀이
const solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
화살표 함수로 변경해서 썼고, 전개구문을 활용했다.
전개구문은 이터러블 객체에 적용할 수 있는 문법으로, 배열이나 문자열의 각 요소를 전달할 수 있다.
예를 들어let n = 45
[...n.toString(3)]
을 출력하면
45를 3진법으로 바꾼 문자열 1200
의 각 요소가 배열의 요소가 된다.[...n.toString(3)]
= ["1","2","0","0"]
10진수 -> n진수
value.toString(n)
=> 문자열 반환
n진수 -> 10진수
parseInt(value, n)
=> 숫자 반환
정확도 테스트 결과
2. 내장 함수를 사용하지 않은 풀이
function solution(n) {
const answer = [];
while(n !== 0) {
answer.unshift(n % 3);
n = Math.floor(n/3);
}
return answer.reduce((acc,v,i) => acc + (v * Math.pow(3, i)),0);
}
정확도 테스트 결과
'Coding test' 카테고리의 다른 글
[프로그래머스] 나머지가 1이 되는 수 찾기 (Level 1) (0) | 2022.04.20 |
---|---|
[프로그래머스] 최소 직사각형 (Level 1) (0) | 2022.04.20 |
[프로그래머스] 약수의 개수와 덧셈 (Level 1) (0) | 2022.04.19 |
[프로그래머스] 음양 더하기 (Level 1) (0) | 2022.04.19 |
[프로그래머스] 두 개 뽑아서 더하기 (Level 1) (0) | 2022.04.19 |