[프로그래머스][JAVA] 다항식 더하기

Boknami·2023년 8월 1일
0

프로그래머스

목록 보기
11/29

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

🕐 풀이 시간 : 45분 정도

🌄시행착오

문제에 큰 흐름은 괜찮게 잡았는데 세세한 부분까지 집중하지 못했다. 테스트케이스 2개는 통과했지만 정답 제출을 하니 정답률이 60%? 정도가 나왔다. 안되는 경우가 잘 생각이 안나서 결국 인텔리제이를 켜서 내가 원하는 테스트 케이스들을 집어넣으며 오류를 확인했다.

이러다보니 내가 처리하지 않은 부분들이 나왔는데 이것들이 가장 컸다.
1. 그냥 x만 달랑 나오는 경우
2. x가 1인 경우에 1x로 표현을 한 경우(그냥 x로 나와야함)

이 부분들을 조건문을 세워 잘 조정하니 정답을 맞출 수 있었다.

💡아이디어

문제를 풀기 전 주석을 달아놓는데 아래 코드에 주석과 아이디어는 크게 비슷하다.

1.split을 통해서 String을 나누고
2.x담을 변수 1개, 자연수 담을 변수 1개를 0으로 초기화해둔다
3.반복문으로 나눈 split문자열들을 접근하며 equals("+")아닌 경우 조건문을 통해 분류한다.
4.끝이 x로 끝나는 건 substring으로 끝에 x를 빼고 값을 더해나가고
5.4가 아니라면 num이라는 변수에 값을 더해간다.
6.String형식으로 x + 정수형태를 출력한다.

코드

// split을 통해서 String을 나누고 
// ["3x","+","7","+","x"]
// x담을 변수 1개, 자연수 담을 변수 1개
// 어떤 경우에도 +가 사이에 있으니 홀수 개를 지닐 듯.
// 그거 아니라면 그냥 equals("+")아닌 경우?로 하면 될 듯
class Solution {
    public String solution(String polynomial) {
        String answer = "";
        int x = 0;
        int num = 0;
        String[] poly = polynomial.split(" ");
        for(int i = 0 ; i < poly.length; i++){
            if(poly[i].equals("+")) {}
            else{
                if( (poly[i].charAt( (poly[i].length()) -1)) == 'x'){
                    if(poly[i].equals("x")){
                        x++;
                        continue;
                    }
                    String temp = poly[i].substring(0, poly[i].length()-1);
                    //System.out.println(Integer.parseInt(temp));
                    x += Integer.parseInt(temp);
                }
                else{
                    //System.out.println(Integer.parseInt(poly[i]));
                    num += Integer.parseInt(poly[i]);
                }
            }
        }
        //System.out.println(x + " " + num);
        if(x == 0){
            answer = String.valueOf(num); 
        }
        else{
            if(num != 0){
                    if(x != 1){
                        answer = String.valueOf(x) + "x + " +  String.valueOf(num);
                    } else {
                        answer = "x + " +  String.valueOf(num);
                    }
                }
            else if(num == 0) {
                    if(x != 1){
                        answer = String.valueOf(x) + "x";
                    } else {
                        answer = "x";
                    }
                }
        }
        return answer;
    }
}

깔끔한 코드

class Solution {
        public String solution(String polynomial) {
            String answer = "";
            int x = 0;
            int num = 0;
            String[] poly = polynomial.split(" ");
            
            for(int i = 0 ; i < poly.length; i++){
                if(poly[i].equals("+")) {}
                else{
                    if( (poly[i].charAt( (poly[i].length()) -1)) == 'x'){
                        if(poly[i].equals("x")){
                            x++;
                            continue;
                        }
                        String temp = poly[i].substring(0, poly[i].length()-1);
                        x += Integer.parseInt(temp);
                    }
                    else{
                        num += Integer.parseInt(poly[i]);
                    }
                }
            }
            
            
            if(x == 0) answer = String.valueOf(num);
            else{
                if(num != 0){
                    if(x != 1){
                        answer = String.valueOf(x) + "x + " +  String.valueOf(num);
                        System.out.println("gd");
                    }
                    else answer = "x + " +  String.valueOf(num);
                }
                else if(num == 0) {
                    if(x != 1) answer = String.valueOf(x) + "x";
                    else answer = "x";
                }
            }
            return answer;
        }
    }

0개의 댓글

관련 채용 정보