티스토리 뷰

문제 설명

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

제한사항

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

 

입출력 예

 

내 풀이 

 

1. 3진수를 담을 array를 만든다.


2. 입력받은 n 값을 3으로 나누고 나머지를 array에 저장한다.
   - n값이 0이 될때까지 나눈다.

3. 이미 array에 뒤집어서 들어간 값을 다시 10진수로 변환한다.


   - 1의 자리는 3^0 * 나머지  / 2의자리는 3^1 * 나머지
   - 이 공식을 적용하기 위해 count=0 변수를 만들고 Math.pow를 통해 제곱 계산을 해준다.

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        int moc = n;
        int i =0;
        int[] array = new int[100];
        while(moc>0){
            array[i] = moc%3;   
            moc /=3;
            i++;
        }
        i--;
        int count = 0;
        for (; i >=0 ; i--) {
            answer += array[i]*Math.pow(3,count);
            count++;
        }
        return answer;
    }
}

 

 

다른 사람 풀이

 

import java.util.ArrayList;
class Solution {
    public int solution(int n) {
        int answer = 0;
        ArrayList<Integer> al = new ArrayList<>();
        //3진법으로 만들기
        int mok = n;
        while(true) {
            int mod = mok% 3;
            mok = mok/3;
            al.add(mod);
            System.out.println("몫" +mok + "나머지"+mod);
            if(mok ==0)
                break;
        }
        // 뒤집어서 10진법으로 만들기
        for(int i = 0; i<al.size(); i++ ) {
            answer += (int)(al.get(al.size()-1-i) * Math.pow(3, i));
        }
        return answer;
    }
}

 

ArrayList를 사용하여 int[100] 이라는 야매코드를 대체하는 것 같다. 

Collection 프레임웍을 잘 활용해서 문제를 풀어야 겠다.

 

 

문제를 풀면서 10진수를 n진수로 변환하는 방법에 대해서 학습할 수 있었고,

오랫동안 까먹었던 수학 원리를 다시 학습할 수 있었다. 

 

 

 

 

 

 

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

 

프로그래머스

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

programmers.co.kr

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함