코린이의 소소한 공부노트

[프로그래머스/Lv.0] 다항식 더하기 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 다항식 더하기

무지맘 2022. 11. 2. 13:13

1. Input

1) 덧셈으로 이루어진 1차 다항식 polynomial

 

2. Output

1) 동류항끼리 더한 결괏값을 담은 문자열

 

3. Constraint

1) 0 < polynomial에 있는 수 < 100

2) polynomial0부터 9까지의 정수, 공백, ‘x’, ‘+'로 이루어져 있다.

3) 항과 연산기호 사이에는 항상 공백이 존재한다.

4) 공백은 연속되지 않으며 시작이나 끝에는 공백이 없다.

5) 하나의 항에서 변수가 숫자 앞에 오는 경우는 없다.

6) 잘못된 입력은 주어지지 않는다.

7) 0을 제외하고는 0으로 시작하는 수는 없다.

8) 문자와 숫자 사이의 곱하기는 생략한다.

9) 계수 1은 생략한다.

10) 결괏값은 내림차순으로 정렬한다.

11) 0 < polynomial의 길이 < 50

 

4. Example

Input: polynomial="3x + 7 + x" -> Output: “4x + 7”

 

5. Code

1) 첫 코드(2022/11/02)

String[] exp = polynomial.split(" ");
int[] coef = new int[2]; // 일차항의 계수, 상수항
for(int i=0 ; i<exp.length ; i+=2){ // "+"는 건너뜀
    if(exp[i].contains("x")){
        if(exp[i].equals("x")) coef[0] += 1;
        else if(exp[i].equals("-x")) coef[0] -= 1;
        else
            coef[0] += Integer.valueOf(exp[i].substring(0,exp[i].length()-1));
    } // if
    else
        coef[1] += Integer.valueOf(exp[i]);
} // end of for

String answer = "";
switch(coef[0]){
    case 1: answer += "x"; break;
    case -1: answer += "-x"; break;
    case 0: break;
    default: answer += coef[0] + "x";
}
if(coef[1]!=0){
    if(answer.length()!=0)
        return answer + " + " + coef[1]; // "ax + b"
    else
        return String.valueOf(coef[1]); // "b"
}
else{
    if(answer.length()!=0)
        return answer; // "ax"
    else
        return String.valueOf(coef[1]); // "0"
}