코딩테스트(Level 0~1)

[JAVA, Programmers] 3진법 뒤집기(자바)

justdoIT0730 2022. 11. 25. 17:11
728x90
728x90

문제 설명

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

 

2. 제한사항

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

 

3. 입출력

n result
45 7
125 229

 

4. 입출력 설명

- 입출력 #1

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

n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
45 1200 21 7

따라서 7 return 해야 합니다.

 

- 입출력 #2
답을 도출하는 과정은 다음과 같습니다.

n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
125 11122 22111 229

따라서 229 return 해야 합니다.

 

5. 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
		String b = "";
        
		while (n!=0) {
			b += (n % 3);
			n = n / 3;
		}

		int cnt = b.length()-1;
		for (int i = 0; i < b.length(); i++) {
			int a = 0;
			a = Integer.parseInt((String) b.subSequence(i, i + 1));			
			answer += a * Math.pow(3, cnt--);
		}
        return answer;
    }
}

1.

n을 3진법으로 만들고 바로 역순으로 b에 저장

 

2.

b를 숫자 하나씩 가져와서 10진수로 계산

728x90
728x90