[프로그래머스] 3진법 뒤집기-JAVA

말하는 감자·2022년 6월 29일
0

Programmers Level 1

목록 보기
46/66
post-thumbnail

프로그래머스 Level 1

🔒 3진법 뒤집기

📚 문제 설명

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


✅ 제한 사항

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

📖 입출력 예

nresult
457
125229

📃 입출력 예 설명

입출력 예#1

  • 답을 도출하는 과정은 다음과 같습니다.
n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
45120000217
  • 따라서 7을 return 해야 합니다.

입출력 예#2

  • 답을 도출하는 과정은 다음과 같습니다.
n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
1251112222111229
  • 따라서 229를 return 해야 합니다.

🗝️ 작성 코드

class Solution {
    public int solution(int n) {
        String three = Integer.toString(n,3);
        
        StringBuffer sb = new StringBuffer(three);
        String reverse = sb.reverse().toString();
        
        int answer = Integer.parseInt(reverse,3);
        
        return answer;
    }
}

3진법을 만들기 위해 3을 나누고 나머지를 구하고 그래야하나...? 싶어서 냅다 검색해봤는데 방법이 있었다.

Integer.toString(int n, int radix)를 사용하면 int형을 주어진 진법의 문자열로 변환한다. 각각 n과 3을 넣어줘서 n을 3진법으로 바꾼 후 문자열 three로 정의하였다.

문자열의 앞뒤를 바꾸는 방법으로는 StringBufferreverse를 사용하였다.

StringBufferthree를 입력해주고 reverse() 메소드를 호출하여 StringBuffer의 문자열을 거꾸로 뒤집준다.

이 때, reverse()는 StringBuffer 객체를 리턴하기 때문에 toString()을 사용하여 문자열로 변환해준다.

변경된 값을 다시 10진법으로 변환할 때는 Integer.parseInt(String s, int radix)를 사용했다.변환할 값과 변환할 진수값을 입력하면 해당 진수에 맞게 Integer형으로 반환해준다.

📑 참고 자료

진법 변환

문자열 거꾸로 뒤집기


🙃 느낀 점

궁금해서 한번 검색했다가 그 뒤로 전체 코드가 인터넷 복붙이 되어버렸다.

구글없이 코딩하는 개발자 없다고는 하지만 꽁기꽁기하다...

검색이 편하긴 해도 다음엔 노가다라도 일단 해보고 검색해야지!

profile
나는 말하는 감자다

0개의 댓글