[ Programmers ] 3진법 뒤집기 (Java)
1. Problem 📃
[ 3진법 뒤집기 ] 
https://programmers.co.kr/learn/courses/30/lessons/68935

2. Constraint 🔗

3. Solution 🔑
- 입력 받은 수 n을 3보다 작을 때 까지 나눠서 answer이라는 문자열 변수에 담아준다
- 위에 과정을 통하면 자동으로 3진법이 반전된 상태로 들어간다.
- Integer.parseInt(진법으로 표현된 값이 존재하는 변수, 3)을 이용하여 다시 10진법으로 표현.
4. Code 💻
public class Solution {
	
	public int solution(int n) {
		String answer = "";
		
		while(n >= 3) {
			answer += n % 3;
			n /= 3;
		}
		answer += n;
		
		return Integer.parseInt(answer, 3);
	}
}
5. Growth 🍄
- 입력 받은 수 n을 3보다 작을 때 까지 나눠서 answer이라는 문자열 변수에 담아준다
- 위에 과정을 통하면 자동으로 3진법이 반전된 상태로 들어간다.
- Integer.parseInt(진법으로 표현된 값이 존재하는 변수, 3)을 이용하여 다시 10진법으로 표현.
public class Solution {
	
	public int solution(int n) {
		String answer = "";
		
		while(n >= 3) {
			answer += n % 3;
			n /= 3;
		}
		answer += n;
		
		return Integer.parseInt(answer, 3);
	}
}5. Growth 🍄
벨로그를 작성하면서 내가 옛날에 짠 코드를 보게 되는데 "이것을 더 줄일 수 없을까" 하고 다시 작성해보았다.
문자열 변수에 입력 받은 수(n)을 3으로 나눈 나머지를 answer변수에 더해주면서 붙여주고
나온 값은
Integer.parseInt(진법으로 표현된 변수, n진수) 를 이용하여 answer 변수를 n진수를 10진법으로 표현
내가 처음 작성한 코드 👶🏻
class Solution {
    public int solution(int n) {
    	int temp = n;
		int count = 1;
		while(temp >= 3) {
			temp = temp / 3;
			count++;
		}
    	int[] arr = new int[count];
        
    	int i = count;
    	while(i>0) {
    		arr[i-1] = n%3;
    		n = n/3;
    		i--;
    	}
    	int answer = 0;
    	for(int j = 0; j<count; j++) {
    		answer += Math.pow(3, j) * arr[j];
    	}
    	System.out.println(answer);
        return answer;
    }
}메모리를 아껴보려고 3으로 몇번 나누어지는지 확인 후 횟수 만큼 진수를 담을 배열의 크기를 선언.
그 수를 3으로 나누어 나머지를 담아주고, for문을 통해 Math.pow(밑, 지수)를 입력해서 나오는 값을 모두 answer 변수에 담아주고 리턴하였었다.
Author And Source
이 문제에 관하여([ Programmers ] 3진법 뒤집기 (Java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tpdlqj0514/Programmers-3진법-뒤집기-Java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)