본문 바로가기

프로그래머스

다항식 더하기

728x90

import java.util.Arrays;
class Solution {
    public String solution(String polynomial) {
        String answer = "";
        String[] splitPoly = polynomial.split("\\+");
      Integer first =0;
      Integer two =0;
      for(int i=0;i<splitPoly.length;i++){
        if(splitPoly[i].contains("x")){ //x처리 부분
          try{

            String[] exception = splitPoly[i].split("x");

            first += Integer.parseInt(exception[0].replaceAll(" ",""));
          }
          catch (Exception e){
            first +=1;
          }

        }
        else{
            // 상수 처리부분 공백제거후 처리
          String exception = splitPoly[i].replaceAll(" ","");
          two +=Integer.parseInt(exception);

        }
      }
      if(first >0){ // x가 1이상일떄

        if(first ==1){ //x가 1이면 1x가 나오지 않게 하기 위해 처리
          if(two>0){
            answer +="x + " + two;
          }
          else
          {
            answer +="x";
          }
        }
        else{ // x가 1이상이면 보통처리
          if(two>0){
            answer +=first + "x + " + two;
          }
          else
          {
            answer +=first + "x";
          }
        }
      }

      else{
        // x 가 0이면 상수만 출력
        answer += two;
      }


      // System.out.println(answer);
      return answer;
    }
}

 

오늘의 교훈 문자열 처리 공백을 조심해라.

1. replaceAll로 공백처리후 작업하는것이 좋다.

2. equals가 안먹힌다.. ㅠㅠ 그럼 contains로 처리 후 split("x)로 처리해보자

3. 예외처리 :

  1. 1x 는 x로 나와야함. 

  2. 상수가 0일때 x값만 표시 또는 x가 0일때 상수값만 표시

728x90