잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).

여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.

감사합니다. -현록

후원해주실 분은 여기로→

현록의 기록저장소

[Lv1] 3진법 뒤집기 본문

Problem Solving/programmers

[Lv1] 3진법 뒤집기

현록 2021. 4. 13. 15:58

programmers.co.kr/learn/courses/30/lessons/68935

 

코딩테스트 연습 - 3진법 뒤집기

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

programmers.co.kr

문제 설명

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


제한사항

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

입출력 예

n

result

45

7

125

229


입출력 예 설명

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)

n (3진법)

앞뒤 반전(3진법)

10진법으로 표현

45

1200

0021

7

  • 따라서 7을 return 해야 합니다.

입출력 예 #2

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)

n (3진법)

앞뒤 반전(3진법)

10진법으로 표현

125

11122

22111

229

  • 따라서 229를 return 해야 합니다.

public int solution(int n) {
    StringBuilder stringBuilder = new StringBuilder();
    while (n > 2) {
        stringBuilder.append(n % 3);
        n /= 3;
    }
    if (n > 0) {
        stringBuilder.append(n);
    }
    char[] array = stringBuilder.reverse().toString().toCharArray();
    int answer = 0;
    for (int i = 0; i < array.length; ++i) {
        answer += (Math.pow(3, i) * (array[i] - '0'));
    }
    return answer;
}

 

 

'Problem Solving > programmers' 카테고리의 다른 글

[Lv2] 튜플  (0) 2021.04.14
[Lv2] 문자열 압축  (0) 2021.04.13
[Lv1] 키패드 누르기  (0) 2021.04.13
[Lv1] 다트 게임  (0) 2021.04.13
[Lv1] 비밀지도  (0) 2021.04.13
Comments

잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).

여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.

감사합니다. -현록

후원해주실 분은 여기로→