소인수분해 한다고 생각하고 코드를 짬.
n 을 3으로 나눈 나머지를 r에 저장해준다. 단 r == 0 인 경우 r = 4로 바꿔준다. 124나라에서는 0을 사용하지않음.
n을 3으로 나누고, while문을 돌면서 n > 0보다 클때까지만 나눠준다. 단, n이 3의 배수인경우 (3,6,9...) n 은 -1이 된다.
example )
n=10 인 경우 -> 41
r =1;
n =3;
sb.insert(0,1);
r = 0 ->(4)
n = 0;
sb.insert(0.4);
return 41;
n = 9 인 경우,
r = 0 ->(4);
n = 3
(r == 0) n = 2
sb.insert(0,4);
r = 2;
n = 0
sb.insert(0,2);
return 24;
tip!
StringBuilder를 사용해야 효율성 통과.(원래는 String + 하는 방식으로 했었음. answer = r + answer;)
public String solution(int n) {
String answer = "";
StringBuilder sb = new StringBuilder();
while(n > 0){
int r = n%3;
n = n/3;
if(r == 0){r = 4; n = n-1;}
sb.insert(0, r);
}
return sb.toString();
}