프로그래머스 - 다항식 더하기
풀이
- 계수와 상수를 따로 저장
- 문자열을 space 기준으로 배열로 만듦
- 배열을 순회하면서, 해당 문자열에
x
가 있으면 계수이므로, x
전까지의 문자열을 int 값으로 바꿔줌
- 그렇지 않고, 해당 문자열이
+
가 아니라면 상수이므로, 해당 문자열을 int 값으로 바꾼 후 저장
- 계수가 있는 경우와 없는 경우, 상수가 있는 경우와 없는 경우, 계수가 1인 경우를 고려해서 알맞은 결과값을 리턴
코드
public class PolynomialAddition {
public String solution(String polynomial) {
int coef = 0;
int cons = 0;
for (String p : polynomial.split(" ")) {
if (p.contains("x")) coef += p.equals("x") ? 1 : Integer.parseInt(p.substring(0, p.length() - 1));
else if (!p.equals("+")) cons += Integer.parseInt(p);
}
String coefStr = coef > 0 ? coef == 1 ? "x" : coef + "x" : "";
String consStr = cons > 0 ? String.valueOf(cons) : "";
String result = "";
if (coef > 0) {
if (cons > 0) result += coefStr + " + " + consStr;
else result += coefStr;
}
else if (cons > 0) result += consStr;
return result;
}
public static void main(String[] args) {
PolynomialAddition polynomialAddition = new PolynomialAddition();
System.out.println(polynomialAddition.solution("3x + 7 + x"));
System.out.println(polynomialAddition.solution("x + x + x"));
}
}