코딩테스트/Programmers

[Programmers] 3진법 뒤집기

주니어주니 2023. 8. 25. 19:47

 

 

 

 

내 풀이

StringBuilder로 reverse를 할까 했는데 StringBuilder <-> Integer 왔다갔다 하면 속도가 느려질까봐 어케든 integer로만 풀려고 했음

 

import java.util.*;

class Solution {
    public int solution(int n) {
        List<Integer> list = new ArrayList<>();
        int answer = 0;
        int j = 1;

        while(n > 0) {
            list.add(n%3);   // {0, 0, 2, 1}
            n /= 3;
        }

        for(int i = list.size() - 1; i >= 0; i--) {
            answer += list.get(i) * j;
            j *= 3;
        }

        return answer;
    }
}

 

 

다른 사람 풀이

깔끔하고 좋은데 속도가 느리긴 하구만 ... 

class Solution {
    public int solution(int n) {
        String str = ""; 
        
        while(n > 0) {
            str = (n % 3) + str;
            n /= 3;
        }
        
        str = new StringBuilder(str).reverse().toString();
        
        return Integer.parseInt(str, 3); 
    }
}