Dragonball Online Goku Hand
본문 바로가기
알고리즘 도장깨기

프로그래머스 Lv.1 "3진법 뒤집기"

by 별의 코비 2022. 11. 28.
728x90

🔥 Programmers Lv.1 : 3진법 뒤집기


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

📎 조건 :
∙ n은 1 이상 100,000,000 이하인 자연수입니다.


👉🏻 My answer

function solution(n) {
    let answer = n.toString(3).split('').reverse().join('');
    return parseInt(answer, 3);
}
새로 알게된 내용
01. Number.toString(n) -> 10진법 -> n진법으로 변환
02. parseInt('10', 3); // 문자열 10을 3진수로 해석


👉🏻 Another ways

class Solution {
    public int solution(int n) {
        int answer = 0;
        String str = "";
        while(n != 0) {
            str += n%3;
            n = n / 3;
        }
        str = reverseStr(str);
        for(int i = 0; i < str.length(); i++) {
            answer += Character.getNumericValue(str.charAt(i)) * Math.pow(3, i);
        }
        return answer;
    }
    public static String reverseStr(String s) {
        return (new StringBuffer(s)).reverse().toString();
      }
}
: while문을 통해 10진수를 3진수로 바꿔준 뒤 String을 reverseStr함수를 통해 다시 뒤집어 준 후에, for문을 통해 다시 10진수로 바꿔줍니다. : Math.pow(3,2) -> 3의 2제곱이 계산을 하게 됩니다.

댓글