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 코드도 비슷하게 쓰긴했다.
  • 처음 짠 것보단 나름 리팩토링한게 보기 편하긴 하다.
  • 근데 전체적으로 알고리즘을 수정하는게 나아보이긴 하는데… 그냥 넘어갈랜다.