자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
🚫제한 사항
n은 1 이상 100,000,000 이하인 자연수입니다.
❗입출력 예
n | result |
45 | 7 |
125 | 229 |
😀 내가 푼 답
function solution(n) {
return parseInt(n.toString(3).split("").reverse().join(""), 3)
}
ⅰ. 10진수 -> n진수로 진수 변환하기
- toString()
- toString()은 문자열을 반환하는 object의 대표적이 방법이지만 기수(radix)를 매개변수로 취할시에는 10진수를 다른 진수로 변환할 수 있음
- 기수의 값은 최소 2부터 36까지 가능함
- 반환되는 값은 Number가 아닌 String!!
const base_num = 10
// 10진수 -> n진수
// console.log(num.toString(n))
// 10진수 -> 3진수
console.log(base_num.toString(3)) // 101
// 10진수 -> 2진수
console.log(base_num.toString(2)) // 1010
console.log(typeof base_num.toString(3)); // string
ⅱ. n진수 -> 10진수로 진수 변환하기
- parseInt(string, radix)
- string
✔ 파싱할 값
✔ 문자열이 아닌 경우 toString 연산을 사용해 문자열로 변환해서 사용
✔ 문자열의 맨앞의 공백은 무시함 - radix(optional)
✔ stirng의 진수를 나타내는 2부터 36까지의 정수
✔ Number 자료형이 아닌 경우 Number로 변환됨 - parseInt의 매개변수에는 Number, String 모두 가능
- string
// n진수 → 10진수
// console.log(parseInt(parameter, n))
// 2진법 -> 10진법
const binary_num = 1111
console.log(parseInt(binary_num,'2')); // 15
// 3진법 -> 10진법
const ternary_num = "1111"
console.log(parseInt(ternary_num, 3)); // 40
😊 문제풀이 답안 OR 다른사람들 답안
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);
}
- unshift()
- 배열 형태의 객체 시작점에 주어진 값을 삽입함
- 배열 맨앞에 새로운 값을 추가하고 배열의 전체 개수를 리턴함
'공부 > 코딩테스트' 카테고리의 다른 글
Q. 같은 숫자는 싫어 (0) | 2023.06.21 |
---|---|
Q. 최소 직사각형 (0) | 2023.06.21 |
Q. 하샤드 수 (0) | 2023.06.21 |
Q. 콜라츠 추측 (0) | 2023.06.21 |
Q. 제일 작은 수 제거하기 (0) | 2023.06.20 |