Java/코딩테스트

[java/프로그래머스/120863] 다항식 더하기 (polynomial.split("\\+ "), .contains, .equals, .replace, .append, .toString)

Se On 2025. 2. 13. 14:58

✏️ 문제 설명

한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.


✏️ code

📌 polynomial.split("\\+ ");
- polynomial은 양의 정수, 공백, 'x', '+'로 이루어져 있고
- 항과 연산기호 사이에는 항상 공백이 존재하기 때문에 (+ )으로 split했습니다.
(이스케이프 처리: 특수문자를 사용할 때는 앞에 \\를 붙여주어야 함)

📌 String term for문과 if문
- term.trim(): 공백을 완전히 제거하기 위해 trim 메서드를 사용하고
- if (term.contains("x")): 일차항인 경우 x라면 1로, nx라면 n이 더해질 수 있도록 replace 했습니다.
- else: 상수항이라면 numSum에 바로 더해질 수 있도록 Integer.parseInt(term) 처리했습니다.

📌 StringBuilder if문
- xSum if문: xSum이 존재한다면 → xSum이 1이라면 x로, 아니라면 nx로
- numSum if문: xSum이 존재한다면 → " + " n, 아니라면 n이 나오도록
class Solution {
    public String solution(String polynomial) {
        String[] arr = polynomial.split("\\+ ");
        int xSum = 0, numSum = 0;
        
        for (String term : arr) {
            term = term.trim();
            if (term.contains("x")) {
                term = term.equals("x") ? "1x" : term;
                xSum += Integer.parseInt(term.replace("x", ""));
            } else {
                numSum += Integer.parseInt(term);
            }
        }
        
        StringBuilder st = new StringBuilder();
        if (xSum > 0) {
            st.append(xSum == 1 ? "x" : xSum+"x");
        }
        if (numSum > 0) {
            st.append(xSum > 0 ? " + "+numSum : numSum);
        }
        return st.toString();
    }
}
반응형