CodeWars 일백 스물 다섯 번째 문제
Updated:
String polynomial converter
static String convertString(int[] pol) {
String result = "";
for(int i = pol.length-1; i >=0; i--) {
if(pol[i] > 0) {
result += (pol[i] > 0 && "".equals(result) ? "" : "+");
}
String coefficient = makeCoefficient(pol, i);
String degree = makeDegree(pol, i);
if(pol[i] != 0) {
if(isMinusOne(coefficient) && isZero(i)) {
result += -1;
} else if(isMinusOne(coefficient) && isNotZero(i)) {
result += "-" + degree;
} else if (isOne(coefficient) && isZero(i)) {
result += 1;
} else if (isOne(coefficient) && isNotZero(i)) {
result += degree;
} else {
result += coefficient + degree;
}
}
}
return result;
}
private static boolean isNotZero(int i) {
return i != 0;
}
private static boolean isZero(int i) {
return i == 0;
}
private static boolean isOne(String coefficient) {
return "1".equals(coefficient);
}
private static boolean isMinusOne(String coefficient) {
return "-1".equals(coefficient);
}
private static String makeCoefficient(int[] pol, int i) {
return pol[i] == 0? "" : String.valueOf(pol[i]);
}
private static String makeDegree(int[] pol, int i) {
String degree = "";
if(i == 1 && pol[i] != 0) {
degree = "x";
} else if(i > 1 && pol[i] != 0) {
degree = "x^" + i;
} else {
degree = "";
}
return degree;
}
- 조건문을 많이 안쓸라고 했는데 많이 쓰게 되어버렸다.
- Best 코드도 비슷하게 쓰긴했다.
- 처음 짠 것보단 나름 리팩토링한게 보기 편하긴 하다.
- 근데 전체적으로 알고리즘을 수정하는게 나아보이긴 하는데… 그냥 넘어갈랜다.