월간 코드 챌린지 시즌1
🔥 3진법 뒤집기 🔥
자연수 n이 매개변수로 주어질때, n을 3진법 상에서 앞뒤로 뒤집은 후 , 이를 다시 10진법으로 표현한 수를 return하는 solution을 완성해보자.
n | return |
---|---|
45 | 7 |
125 | 229 |
class Solution {
public int solution(int n) {
int answer = 0;
StringBuilder sb = new StringBuilder();
while (n >= 3){
sb.append(n%3);
n = n/3;
}
sb.append(n%3);
String s = sb.toString();
String[] x = s.split("");
int j = 1;
for(int i=x.length-1;i>-1;i--){
int m = Integer.parseInt(x[i]);
answer = answer + m*j;
j = j*3;
}
return answer;
}
}
꽤나 복잡하다.
어떻게 풀지 생각할때는 간단하게 풀릴거라고 생각했는데 막상 코드를 작성하니까 뭔가 지저분하고 깔끔하지 못하다.
그래서 찾아보니 자바에서 제공하는 방법들이 있었다^^ 하하
class Solution {
public int solution(int n) {
String a = "";
while(n > 0){
a = (n % 3) + a;
n /= 3;
}
a = new StringBuilder(a).reverse().toString();
return Integer.parseInt(a,3);
}
}
- N진법 ➡️ 10진법
- Integer.parseInt (i, n);- 10진법 ➡️ N진법
- 2진법 : Integer.toBinaryString(n);
- 8진법 : Integer.toOctalString(n);
- 16진법 : Integer.toHexString(n);
내가 원하던 코드