728x90
진법 변환을 이용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해 주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예 & 설명
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
- 따라서 229를 return 해야 합니다.
나의 풀이
진법 변환포스팅에서 알아보았던 parseInt() 함수를 사용하여 간단하게 원하는 진법으로 변환할 수 있습니다.
parseInt(String, radix)와 같이 구문이 이루어져 있기 때문에 toString() 메서드로 문자열로 변환 후 reverse() 함수로 배열을 뒤집어주고, 다시 join()을 사용하여 문자열로 변환 후 마지막을 3진법으로 변환하여 마무리해주었습니다.
다른 풀이 ✅
먼저 while문에서 소인수분해를 사용하여 3진법으로 변환한 값을 arr에 넣어줍니다.
그러면 위 그림 1처럼 위에서 아래로 진행하면서 arr배열에 저장되어 있습니다.
그리고 각 숫자와 자릿수를 곱해줘야 합니다. 근데 arr배열에는 위에서부터 저장했기 때문에 그림 2처럼 하기 위하여 reverse() 함수를 사용하여 뒤집어주었습니다.
그리고 각 자릿수와 숫자를 곱하고 더해준다면 해당 진법으로 변환이 마무리가 됩니다.
참고 ❗
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 최소직사각형 (JavaScript) (0) | 2024.05.02 |
---|---|
[프로그래머스] 올바른 괄호 (JavaScript) (0) | 2024.04.28 |
[SQL] 조건에 맞는 도서 리스트 출력하기 (ORACLE) (0) | 2024.04.21 |
[프로그래머스] 평행 (JavaScript) (0) | 2024.03.13 |
[프로그래머스] 특이한 정렬(JavaScript) (1) | 2024.03.12 |