ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 - Lv1. 3진수 뒤집기
    PS 2022. 2. 27. 23:09

    문제 : 3진수 뒤집기

    • 문제 내용은 여기.
    • 쉽게 말해, 어... 문제가 워낙 간단해서 쉽게 말할 것도 없다.

    풀이

    1) 처음 푼 방식 : 기능별로 메서드 나눔

    class Solution {
        public int solution(int n) {
            String rt = getReverseTernary(n);
            return ternaryToDecimal(rt);
        }
    
        public String getReverseTernary(int number) {
            StringBuilder tNumbers = new StringBuilder();
    
            while(true) {            
                if (number < 3) {
                    tNumbers.append(number);
                    break;
                }
    
                tNumbers.append(number % 3);
                number /= 3;
            }
    
            return tNumbers.toString().replaceAll("^0+", "");
        }
    
        public int ternaryToDecimal(String ternary) {
            int total = 0, digit = ternary.length();
    
            for (char s : ternary.toCharArray()) {
                digit -= 1;
                total += (Character.getNumericValue(s) * Math.pow(3, digit));    
            }
    
            return total;
        }
    }

    2) 다시 푼 방식 : 불필요한 로직 수정 & 알고 보니 java api에서 지원되는 기능

    public int solution(int n) {
        StringBuilder tNumbers = new StringBuilder();
    
        while(n > 0) {
            tNumbers.append(n % 3);
            n /= 3;
        }
    
        return Integer.parseInt(tNumbers.toString(), 3);
    }
    • 구현 아이디어 자체는 어려울 게 없다, 문제가 원하는 대로 구해주는게 전부. 이제 단순구현은 너무 쉬운걸까(근데 이러면 내일 어려운 문제 나오고).

    후기 : api 문서를 잘 보자

    1 ) Integer.parseInt()를 새로운 형태로 사용해봤다. 진법까지 바꿔줄거라곤 아예 생각도 못했었는데 오늘 처음 접했다.
    2 ) 공부할 시간이 없었던 주말이지만, 가족과의 행복한 시간도 중요하다는 거. 신경쓸 일이 많아서 공부에 빡집중하는게 힘든 요즘이지만, 그 와중에 최선을 다한다는게 중요한 거겠지. 오늘은 인강으로 하루 마무리하고 내일부터 또 열심히 공부해보자.

    댓글

Designed by Tistory.