[Programmers] 3진법 뒤집기 + 진법 변환(java)

개발자·2021년 9월 29일
post-thumbnail
  • N진법 -> 10진법
Integer.parseInt(i, N);
  • 10진법 -> N진법
Integer.toBinaryString(number); // 2진법
Integer.toOctalString(number); // 8진법
Integer.toHexString(number); // 16진법

문제 설명

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

제한사항

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

소스코드

풀이1

import java.util.*;
class Solution {
    public int solution(int n) {
        int answer = 0;
        ArrayList<Integer> list = new ArrayList<>();
        // 10진법 -> 3진법
        while(n != 0) {
            list.add(n%3);
            n /= 3;
        } 
        // 3진법 -> 10진법
        int tmp = 1;
        for(int i=list.size()-1;i>=0;i--) {
            answer += list.get(i)*tmp;
            tmp *= 3;
        }
        return answer;
    }
} 

풀이2

import java.util.*;
class Solution {
    public int solution(int n) {
        int answer = 0;
        String ans = "";
        while(n != 0) {
            ans += n%3;
            n /= 3;
        }
        return Integer.parseInt(ans, 3);
    }
}
profile
log.info("공부 기록 블로9")

0개의 댓글