Hayden's Archive
[알고리즘] 프로그래머스 : 3진법 뒤집기 본문
알고리즘 문제 출처 : 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;
}
}