반응형

 

간단하게 설명해 보겠습니다 

자연수 n을 3진수로 만들고 그 수 배열을 반대로 뒤집어서 10진법으로 바꿔서 리턴하는 함수를 만드는 것입니다 

 

먼저 n을 3진수로 만들어 봅시다 

 

진수 변환은 주어진 수를 나눈 나머지를 차례로 뒷자리부터 입력 하면 됩니다 

 

예를 들어 45를 3진수로 만들고 싶으면 

 

45를 3으로 나눕니다 그럼 몫이 15입니다 나머지는 0 

15를 3으로 나눕니다 그럼 몫이 5입니다 나머지는 0

5를 3으로 나눕니다 그럼 몫이 1 입니다 나머지는 2

1을 3으로 나눌수는 없네요 그럼 나머지는 1

 

이 맨 끝 숫자 나열하면 1200이죠?

 

이게 45를 3진수로 변환한 수입니다 ㅎㅎ 

 

이걸 코드로 나타내 보면 

 

        //변환된 수를 순차적으로 저장할 변수
        List<Integer> li = new ArrayList<>();

        //3진수로 변환하기
        while(n != 0){

            li.add(n % 3);
            n /= 3;
        }

이와 같이 만들수 있겠습니다 

나눈 나머지를 li에 넣고 

나눈 몫을 n에 다시 대입합니다 그럼 n이 0이 될 때까지 반복할 것입니다

 

그럼 이 수를 반대로 즉 0021 요렇게 바꾼 다라는 거죠 

        //뒤집기
        Collections.reverse(li);

컬렉션즈 클래스의 리버스 메서드를 사용하여 간단히 처리할 수 있습니다

 

 

0021을 10 진수로 표현을 해보면 

7 이겠네요 ㅎㅎ

        for (int i = 0; i < li.size(); i++){
            answer += li.get(i) * Math.pow(3, i);
        }

 이처럼 반복문을 통해 10진수로 변환합니다 

 

이러한 문제는 가장 간단한 문제이고 중요한 건 

 

어떠한 진수든 만들 수 있어야 한다는 것입니다 

자주 사용하는 2진수 10진수 16진수 이외에도 다 변환할 수 있는 기본적인 문제이므로 

 

숙지하도록 합시다 

반응형
복사했습니다!