3진법 뒤집기
문제 설명
제한사항
입출력 예nresult
입출력 예 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예nresult
45 | 7 |
125 | 229 |
입출력 예 설명
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
나의 풀이
function solution(n) {
var answer = 0;
let i = 0;
let arr= [];
while(n>=3){
arr[i] = n%3;
n = Math.floor(n/3);
i++;
}
arr.push(n);
for( let j =arr.length-1,i=0; j>=0, i<arr.length ;j--, i++){
if(arr[j]!==0){
answer += arr[j]*(3**i);
}
}
return answer;
}
3진법은 생소해서 3진법이 무엇인지 검색을 해보았고 결국 기존에 알고있는 2진법 10진법처럼 3을 기준으로 표현한 수라는 것을 알게 되었다. 문제에서는 친절하게 3진법으로 나타낸 수를 뒤집어서 10진법으로 나타내라고 하니 바로 술술 떠올랐던거 같다.
1. n을 3진법으로 나타내기 -> 3으로 나누었을때 몫을 다시 n으로 저장하고 나머지는 따로 변수에 저장
2. 3진법으로 나타낸 n 뒤집기 -> 따로 arr에 저장한 수가 뒤집어진 3진법으로 나타낸 n
3. 뒤집은 n을 10진법으로 표현하기 -> 1의자리는 3^0 10의자리는 3^1 100의자리는 3^2 ... 인점을 이용해 for문의 조건을 써주고 각 곱해서 10진법으로 나타내기 !
떠오른 방식은 위와 같았고 그대로 코드를 작성해보니 잘 돌아갔던 거 같다 !
'코테 준비 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 예산 (javascript) (0) | 2023.03.06 |
---|---|
[프로그래머스] 이상한 문자 만들기 (javascript) (3) | 2023.03.05 |
[프로그래머스] 같은 숫자는 싫어 (javascript) (0) | 2023.03.04 |
[프로그래머스] 최대공약수와 최소공배수 (javascript) (0) | 2023.03.04 |
[프로그래머스] 직사각형 별찍기 (javascript) (0) | 2023.03.02 |