PS/Programmers

[level1, 진법] 3진법 뒤집기

git-sun 2023. 3. 21. 20:43

1. 문제

 

 

 

 

 

 

 

 

2. 문제 해결 논리

  1. 문제 이해
    • 주어진 것
      • int n    // 10진법으로 주어진 수
    • 요구되는 것
      • int answer    // 3진법으로 바꾸고 역순 정렬 후, 10진법으로 변환한 수
  2. 데이터 구조 결정
    • String, Integer, StringBuilder 클래스의 메서드 사용
    • StringBuilder와 반복문을 사용
  3. 알고리즘 설계
    1. String, Integer, StringBuilder 클래스의 메서드
      • Integer.toString을 이용한 10진법 -> n진법 변환
      • StringBuilder를 이용한 역순 정렬
      • Integer.parseInt를 이용한 n진법 -> 10진법 변환
    2. StringBuilder와 반복문

 

 

 

 

 

3. 코드 구현

3-1. String, Integer, StringBuilder 클래스

class Solution {
    public int solution(int n) {
        //Integer.toString 메서드로 10진법 -> 3진법 변환
        String ternary = Integer.toString(n, 3);
        //StringBuilder의 reverse메서드로 역순 정렬
        String reversedTernary = new StringBuilder(ternary).reverse().toString();
        //Integer.parseInt 메서드로 3진법 -> 10진법 변환
        int result = Integer.parseInt(reversedTernary, 3);

        return result;
    }
}

 

 

 

 

3-2. StringBuilder와 반복문

class Solution {
    public int solution(int n) {
        StringBuilder ternary = new StringBuilder();
        
        //StringBuilder에 3진법 저장
        while (n > 0) {
            ternary.append(n % 3);
            n /= 3;
        }

        int result = 0;
        int factor = 1;
        
        //StringBuilder의 마지막 요소부터 10진법으로 변환
        for (int i = ternary.length() - 1; i >= 0; i--) {
            result += (ternary.charAt(i) - '0') * factor;
            factor *= 3;
        }

        return result;
    }
}

 

 

 

 

 

 

 

* Reference

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

 

프로그래머스

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

programmers.co.kr

 

반응형