본문 바로가기
코딩테스트/programming_JAVA

[Java] 프로그래머스_68935 : 3진법 뒤집기

by prometedor 2023. 12. 5.

진법 변환

3진법 뒤집기 : Level1

 

https://school.programmers.co.kr/learn/courses/30/lessons/68935

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

처음 작성한 코드

class Solution {
    public int solution(int n) {
        String n3 = Integer.toString(n, 3);

        int answer = n3.charAt(0) - '0';
        for (int i = 1; i < n3.length(); i++) {
            int cnt = 1;
            for (int j = 0; j < i; j++) cnt *= 3;
            answer += cnt * (n3.charAt(i) - '0');
        }
        
        return answer;
    }
}

 

 

 

10진수 -> n진수 변환

// 테스트를 위한 10진수 값 = 45
int n = 45;
String s = "";

10진수 -> 2진수
s = Integer.toBinaryString(n);
s = Integer.toString(n,2);

10진수 -> 3진수
s = Integer.toString(n,3);

10진수 -> 4진수
s = Integer.toString(n,4);

10진수 -> 5진수
s = Integer.toString(n,5);

10진수 -> 6진수
s = Integer.toString(n,6);

10진수 -> 7진수
s = Integer.toString(n,7);

10진수 -> 8진수
s = Integer.toOctalString(n);
s = Integer.toString(n,8);

10진수 -> 16진수
s = Integer.toString(n,16);
s = Integer.toHexString(n);

 

 

10진수 -> n진수 변환

// 테스트를 위한 n진수 값 = 45
String s = "1200";
int n = 0;

2진수 -> 10진수
n = Integer.parseInt(a,3);

3진수 -> 10진수
n = Integer.parseInt(a,3);

4진수 -> 10진수
n = Integer.parseInt(a,4);

5진수 -> 10진수
n = Integer.parseInt(a,5);

6진수 -> 10진수
n = Integer.parseInt(a,6);

7진수 -> 10진수
n = Integer.parseInt(a,7);

8진수 -> 10진수
n = Integer.parseInt(a,8);

16진수 -> 10진수
n = Integer.parseInt(a,16);

 

 

 

다른 사람 풀이

class Solution {
    public int solution(int n) {
        String a = "";

        while(n > 0){
            a = (n % 3) + a;
            n /= 3;
        }
        a = new StringBuilder(a).reverse().toString();


        return Integer.parseInt(a,3);
    }
}

 

 

10진수 -> 3진수 변환

while(n > 0){
    a = (n % 3) + a;
    n /= 3;
}

 

 

StringBuilder의 reverse()

=> StringBuilder의 문자열을 역순으로 뒤집는다.

String original = "Hello, World!";
StringBuilder reversed = new StringBuilder(original).reverse();
String result = reversed.toString();

System.out.println(result); // 출력: "!dlroW ,olleH"

 

=> 위의 코드에서 StringBuilder(original)는 주어진 문자열을 가진 StringBuilder 인스턴스를 생성하고, reverse() 메서드는 이를 역순으로 뒤집는다. 마지막으로 toString() 메서드를 사용하여 역순으로 뒤집힌 문자열을 얻을 수 있다.

 

 

문제점 : 진수 변환 방법을 잘 몰랐다.

해결 방법 : 자바에서 진수 변환 방법을 검색하여 알아내 문제를 풀 수 있었다.

깨달은 바 : 자바에서 진수 변환 방법을 쉽게 하는 방법에 대해 배울 수 있었다.