한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial
이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.
n | result |
---|---|
12 | [2, 3] |
17 | [17] |
420 | [2, 3, 5, 7] |
polynomial을 (공백)+(공백)을 기준으로 split하기
polynomial.split(" ") | polynomial.split("\+") |
---|---|
3x | 3x |
+ | (한칸띄고)7 |
7 | (한칸띄고)x |
+ | |
x |
x변수가 있는것끼리 더하고, 상수끼리 더하기 (이때!! 1x가 아닌 x!!)
public String solution(String polynomial) {
String answer = "";
String[] p_list = polynomial.split(" \\+ ");
/**
* polynomial.split(" ") polynomial.split("\\+")
3x 3x
+ (한칸띄고)7
7 (한칸띄고)x
+
x
*/
int x_param = 0;
int param = 0;
for (String p : p_list) {
if (p.contains("x")) {
if (p.substring(0,p.length()-1).equals("")) {
x_param += 1;
} else {
x_param += Integer.parseInt(p.substring(0,p.length()-1));
}
} else {
if (!p.contains("+")) {
param += Integer.parseInt(p.substring(0,p.length()));
}
}
}
/*
경우1. 2x
경우2. 0
경우3. 2x + 7
주의!! 1x가 아닌 x이다!!
*/
if (x_param != 0 && x_param != 1 && param != 0) {
answer = Integer.toString(x_param) + "x + " + Integer.toString(param);
}
if (x_param != 0 && x_param != 1 && param == 0) {
answer = Integer.toString(x_param) + "x";
}
if (x_param == 1 && param == 0) {
answer = "x";
}
if (x_param == 1 && param > 0) {
answer = "x + " + Integer.toString(param);
}
if (x_param == 0) {
answer = Integer.toString(param);
}
return answer;
}