알고리즘

[프로그래머스, 자바] 다항식 더하기

hminor 2024. 3. 15. 11:12

풀이

  • 우선 해당 문제는 StringTokenizer를 사용하여 빈 공백을 제거한 문자를 받아서
  • x와 함께 있는 문자는 substring을 사용해서 x 전까지만 정수 타입 x에 담고
  • 정수만 있는 경우 y에 담아서 조건 처리 후 해결.
  • 자바 문제는 또 오랜만에 풀다보니 쉽지 않았어서
  • 헷갈렸던 코드에 대해 한 번 끄적이고 마무리 하겠습니다.
  • 우선 StringTokenizer로 분해된 문자가 몇개 있지 모를 경우엔
     hasMoreTokens()를 사용해서 반복할 수 있도록 하기
  • 또한 substring에 첫 인자값만 넣으면 하나만 되는 것으로 기억하고 있었는데 그게 아니였다.
  • 그리고 String.format()을 사용해서 문자안에 %d,%s,%f로 원하는 타입의 값을 추가할 수 있다는 것.

 

import java.util.*;

class Solution {
    public String solution(String polynomial) {
        StringTokenizer st = new StringTokenizer(polynomial);
        int x = 0;
        int y = 0;
        while (st.hasMoreTokens()) {
            String s = st.nextToken();
            if (s.equals("+")) continue;
            else if (s.substring(s.length()-1).equals("x")) {
                if (s.equals("x")) x += 1;
                else x += Integer.parseInt(s.substring(0,s.length()-1));
            }
            else y += Integer.parseInt(s);
        }
        if (x == 0) return String.valueOf(y);
        else if (y == 0) {
            if (x == 1) return "x";
            else return x+"x";
        }
        else {
            if (x == 1) return String.format("x + %d",y);
            else return String.format("%dx + %d",x,y);
        }
    }
}