Hayden's Archive

[알고리즘] 프로그래머스 : 3진법 뒤집기 본문

Algorithm

[알고리즘] 프로그래머스 : 3진법 뒤집기

_hayden 2021. 2. 20. 14:38

알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/68935

 

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

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

programmers.co.kr

 

내가 작성한 코드

public class Solution {
	private String numStr = "";

	public int solution(int n) {
		int answer = 0;
		boolean isNotZero = false;
		toTernary(n);
		for(int i=0; i<numStr.length(); i++) {
			if(!numStr.substring(i, i+1).equals("0")) {
				isNotZero = true;
			}
			if(isNotZero) {
				answer = toDecimal(numStr.substring(i, numStr.length()));
				break;
			}
		}
		return answer;
	}

	public void toTernary(int n) {
		while(n != 0 && n != 1 && n != 2) {
			numStr += (n % 3);
			n /= 3;
		}
		numStr += n;
	}

	public int toDecimal(String numStr) {
		int answer = 0;
		int idx = 0;
		for(int i=numStr.length()-1; i >= 0; i--) {
			answer += Math.pow(3, idx++) * Integer.parseInt(numStr.substring(i, i+1));
		}
		return answer;
	}
}