본문 바로가기
Java/알고리즘

[프로그래머스/알고리즘] 3진법 뒤집기 (자바/Java)

by 전재경 2022. 11. 26.

문제 설명

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

 

제한사항

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

 

 

 

 

Step1. 문제분석 

3진법을 도출해내는 방법을 알면 편할거같다.

입력받는 n 값에서 3만큼 나눈 나머지 값을 answer에 넣고 n값에 다시 3을 나눠준다.

이렇게 계속 반복하며 3진법의 값을 도출해내고

return을 할때 (answer, 3) 를 통해 3진법 재변환을 통해 값을 출력한다.

 

Step2. 문제풀이 코드 

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);
	}
}

 

Step3. 다른 사람의 풀이 코드

class Solution {
    public int solution(int n) {
        int answer = 0;

        String str = "";

        while(n>0)
        {
            int r = n%3;
            n = n / 3;
            str = r + str;
        }
        System.out.println(str);

        for(int i=0; i<str.length(); i++)
        {
            answer += Math.pow(3,i) * (str.charAt(i) - '0');
        }

        return answer;
    }
}

댓글