본문 바로가기
코딩테스트/프로그래머스 1단계

프로그래머스 1단계 - 3진법 뒤집기

by SICDev 2021. 4. 21.
반응형

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

 

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

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

programmers.co.kr

 

 

class Solution {
    public int solution(int n) {
            //만약 n이 11라는것이 들어왔다.
	    	//이것을 3진법으로 구하기위서해는 3으로 나눈 나머지값들을 순차적으로 배치한다.
	    	String temp = "";
	    	//처음 11이 들어왔다.
	    	//while문 으로 들어간다.
	    	//그다음 몫인 3이 들어왔다.
	    	//while문으로 들어간다.
	    	while(n >= 3){
	    		//11을 3으로 나눈 나머지는 1이다. -> temp = "2"
	    		//3을 3으로 나눈 나머지는 0 이다. -> temp = "02"
	    		temp = n%3 + temp;
	    		//11을 3으로 나눈 몫은 3이다.
	    		//3을 3으로 나눈 몫은 1이다.
	    		n /= 3;
	    	}
	    	//while문을 빠져나왔을때 11을 3진법으로 바꾼 값은 102이다.
	    	//마지막 몫 + temp를 하면 3진법으로 변환이 된다.
	    	temp = n + temp;
	    	
	    	//reverse()를 이용하기위해 StringBuffer에 temp를 넣는다.
	    	StringBuffer buffer = new StringBuffer(temp);
	    	//reversetemp에 temp 문자열을 역순으로 바꾼 값 201 이 들어간다. 
	    	String reversetemp = buffer.reverse().toString();
	    	//201을 10진법으로 바꾸기위해 Integer.ParseInt(값, 진법)를 사용한다.
	        int answer = Integer.parseInt(reversetemp, 3);
	        //201을 10진법으로 바꾼값은 19이다.
	        return answer;
    }
}
반응형