[코드테스트] 3진법 뒤집기

이강민·2021년 11월 15일
0

[코드테스트]Javascript

목록 보기
19/39
post-thumbnail

3진법 뒤집기

문제설명

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

입출력 예

n result
45 7
125 229

입출력 설명

n 3진법 변환 3진법 뒤집기 result
45 1200 0021 7
125 11122 22111 229

나의 풀이 1번

첫번째 풀이는 3진법으로 변환할때 수동적으로 변환하였다.

function solution(n) {
    //tri에 3진법으로 변환시키기 위해 변수를 만들었으며 3진법은 string형으로 표현한다.    
    let tri = "";
    //3으로 나눌때 0이상일때만 반복문을 돌려서
    while( n / 3 > 0){
        //3에다가 3으로 나눈 나머지들을 담는다.
        tri += n % 3;
        //이미 이 값은 순서대로 쌓이기 때문에 뒤집은 형태로 쌓인다.
        //n을 3으로 다시 나누어 감소되도록 한다.(while문이 0이하일 경우 멈추기 위해)
       n = parseInt(n / 3);
    }
    //result의 값에 parseInt 를 사용하여 3진법을 10진법으로 바꾼다. 
    let result = parseInt(tri, 3)
    return result;
}

나의 풀이 2번

두번째 풀이는 모든 계열을 API를 활용하였다.

function solution(n){
    //1. tri라는 변수를 만들어 3진법으로 만들 준비를 한다.
    //2. n.toString을 활용하여 매개변수를 3진법으로 변환한다. 이때 string으로 반환받는다.
    //3. 반환받은 string 타입을 split을 활용하여 ''을 구분으로 array타입으로 전환한다.
    //4. 위에서 전환한 이유는 reverse를 사용하여 배열로써 뒤집기 위함이다.
    //5. 뒤집은 array를 ''으로 구분되어 있는 각 index들을 하나로 합친다.
    let tri = n.toString(3).split('').reverse().join('');
    //6. result 변수 만들고 tri라는 3진법 뒤집힌 값을 10진법으로 변환한다.
    let result = parseInt(tri, 3);
    //7. result return한다.
    return result;
}

toString( ) 진수로 전환하기.

toString( )은 정수를 문자열로 변환시킨다. 이때 괄호안에 숫자형태를 넣으면 그 숫자의 진법으로 문자열을 return 한다.

let 아무숫자 = 450;
let 이진법 = 아무숫자.toString(2);
let 삼진법 = 아무숫자.toString(3);
.
.
.
.
console.log(이진법) // 111000010, type : string
console.log(삼진법) //121200
.
.
.

profile
AllTimeDevelop

0개의 댓글

관련 채용 정보