function solution(n) {
//n을 3진법으로 바꿔
let ternary = n.toString(3);
//3진법이 된걸 뒤집어 reverse
let reversTernary = ternary.split("").reverse();
let sum = reversTernary.join("")
//reverse를 다시 10진법으로 바꿔
let answer = parseInt(sum, 3)
return answer;
}
코드 설명
- 3진법 변환: n.toString(3)를 사용하여 10진수 n을 3진법 문자열로 변환합니다.
- 문자열 뒤집기: split("") 메서드를 사용하여 문자열을 문자 배열로 변환한 후, reverse()로 배열을 뒤집습니다.
- 배열을 문자열로 합치기: join("")을 사용하여 다시 문자열로 만듭니다.
- 10진수로 변환: parseInt(sum, 3)를 통해 뒤집어진 3진법 문자열을 10진수로 변환합니다.
- 결과 반환: 최종 결과를 반환합니다.
toString()과 parseInt() 메서드가 객체의 타입에 따라 기능이 다르다는 것을 이번에 알게 되었다.
아래는 객체의 타입에 따른 각각의 기능 설명이다.
1. toString 메서드
- 용도: 숫자를 특정 진법의 문자열로 변환합니다.
- 구문: num.toString(radix)
- 여기서 num은 변환할 숫자이고, radix는 변환할 진법 (2진법, 8진법, 10진법, 16진법 등)입니다.
- 원리:
- 이 메서드는 주어진 숫자를 해당 진법으로 표현하기 위해 나눗셈과 나머지 계산을 반복하여 각 자리를 결정합니다.
- 예를 들어, 10진수 15를 3진법으로 변환할 때:
- 15 ÷ 3 = 5, 나머지 0 (가장 오른쪽 자리)
- 5 ÷ 3 = 1, 나머지 2
- 1 ÷ 3 = 0, 나머지 1
- 따라서, 3진법으로는 "120"이 됩니다 (가장 오른쪽 자리부터).
2. parseInt 메서드
- 용도: 문자열을 특정 진법의 숫자로 변환합니다.
- 구문: parseInt(string, radix)
- 여기서 string은 변환할 문자열이고, radix는 해당 문자열의 진법입니다.
- 원리:
- 이 메서드는 문자열의 각 자리수를 해당 진법의 값으로 변환하여 10진수로 합산합니다.
- 예를 들어, "120" (3진법 문자열)을 10진법으로 변환할 때:
- 1 × 323^2 = 9 (첫 번째 자리)
- 2 × 313^1 = 6 (두 번째 자리)
- 0 × 303^0 = 0 (세 번째 자리)
- 따라서, "120"은 9 + 6 + 0 = 15 (10진법)입니다.
요약
- Number 객체는 Object 객체의 toString()메소드를 오버라이딩하며, Object.prototype.toString() 를 상속받지 않습니다. Number 객체에서 toString() 메소드는 특정 진수로 객체를 표현한 문자열을 환원합니다.
- Number.parseInt() 정적 메서드는 문자열 인자를 구문 분석하여 지정된 진법 또는 기수의 정수를 반환합니다.
'JavaScript' 카테고리의 다른 글
[프로그래머스 Lv.1] 최소직사각형 (0) | 2024.10.31 |
---|---|
[프로그래머스 Lv.1] 삼총사 (0) | 2024.10.29 |
[프로그래머스 Lv.1] 예산 (0) | 2024.10.25 |
[프로그래머스 Lv.1] 크기가 작은 부분 문자열 (0) | 2024.10.25 |
[TIL] 유효성 검사를 위한 정규 표현식 정리 (0) | 2024.10.24 |