개?발/프로그래머스

3진법 뒤집기(Java)

YUEIC 2024. 8. 6. 19:35

 

주어진 매개변수를 3진수로 변환한 뒤 해당 수를 역순으로 정렬한 뒤 다시 10진수로 변환한 값을 반환해야한다.

 

여러방법이 있겠지만 정말 직관적으로 해결한듯 하다.

1. 10진수를 3으로 나눠가며 나온 나머지를 리스트에 순차적으로 추가한다.

2. 해당 리스트를 역순정렬(reverse)한다.

3. 역순정렬된 리스트를 순차적으로 탐색하며 3의 거듭제곱을 곱하여 10진수로 만든다.

 

코드 설명은 주석

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

class Solution {
    public int solution(int n) {

        int answer = 0;

        //3진수 계산을 위한 변수 (3으로 나눈 값을 저장한다.)
        int nVar = n;

        //3진수를 순차적으로 담는 리스트 
        List<Integer> convertN = new ArrayList<>();

        //n을 3으로 나눠가면서 나머지를 리스트에 더한다.
        //만약 더이상 몫이 나오지 않는다면 나머지만 존재하는 nVar을 리스트에 추가한다.
        while (true) {
            if(nVar / 3 != 0){
                convertN.add(nVar % 3);
                nVar = nVar / 3;
            }else{
                convertN.add(nVar);
                break;
            }
        }
        
        //리스트를 역순 정렬
        Collections.reverse(convertN);

        //리스트를 차례대로 get하며 사이클이 돌때마다 3의 거듭제곱을 곱한다.
        int cycle = 0;
        for(int i = 0 ; i < convertN.size(); i++){
            answer += convertN.get(i).intValue() * Math.pow(3, cycle);
            cycle++;
        }

        return answer;
    }
}

'개?발 > 프로그래머스' 카테고리의 다른 글

키패드 누르기 (Java)  (0) 2024.08.12
크기가 작은 부분문자열 (Java)  (0) 2024.08.06
예산(Java)  (0) 2024.08.06
문자열 다루기 기본(Java)  (0) 2024.08.06
부족한 금액 계산하기(Java)  (0) 2024.08.06