Language/JAVA

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

paran21 2022. 1. 19. 11:39

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int solution(int n) {
        int answer = 0;
        List<Integer> number = new ArrayList<>();
        //3진법으로 변환 + 뒤집을 거라서 0부터 넣어도 됨
        while (n > 0) {
            number.add(n % 3);
            n = n/3;
        }
        //다시 10진법으로 변환
        for (int j = 0; j < number.size(); j++) {
            answer += number.get(j) * Math.pow(3, number.size()-1-j);
        }
        return answer;
    }
}

뒤집는다는 부분때문에 처음에 List배열을 만들어서 add를 사용하였는데

String으로 만들어서 아래와 같이 뒤집는 방법도 있다.

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);
    }
}

그리고 a = a + (n % 3)으로 하면 뒤집지 않아도 된다.

 

진법/진수

  • 자주 사용하는 2, 8, 16은 Integer에 메소드가 있다.
    • 2진수 : Integer.toBinaryString(int num) → String으로 반환
    • 8진수 : Integer.toOctalString(int num) → String으로 반환
    • 16진수 : Integer.toHexString(int num) → String으로 반환
  • 그 외의 경우에는 위의 경우처럼 While문을 사용하여 String형태로 만들어준다.
  • Interger.parseInt(str, 진법)을 사용하면 간단하게 10진법 int로 변환할 수 있다.

'Language > JAVA' 카테고리의 다른 글

#Stream  (0) 2022.01.19
[프로그래머스] 최소직사각형  (0) 2022.01.19
[프로그래머스] 하샤드 수  (0) 2022.01.19
[프로그래머스] 콜라츠 추측  (0) 2022.01.19
[프로그래머스] 제일 작은 수 제거하기  (0) 2022.01.19