조건 문자열

nacSeo (낙서)·2024년 1월 3일
0

프로그래머스

목록 보기
10/169

문제 설명

문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.

두 수가 n과 m이라면
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.

제한 사항

1 ≤ n, m ≤ 100

나의 코드

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;
        if(ineq == "<") {
            if(eq == "=") {
                if(n<=m) {
                    answer= 1;
                } else {
                    answer= 0;
                }
            } else if(eq == "!") {
                if(n<m) {
                    answer = 1;
                } else {
                    answer = 0;
                }
            }
        } else if(ineq == ">") {
            if(eq == "=") {
                if(n>=m) {
                    answer = 1;
                } else {
                    answer = 0;
                }
            } else if(eq == "!") {
                if(n>m) {
                    answer = 1;
                } else {
                    answer = 0;
                }
            }
        }
        return answer;
    }
}

첫 번째 코드

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;
        if(ineq == "<" && eq == "=") {
            if(n<=m) {
                answer = 1;
            } else {
                answer = 0;
            }
        } if(ineq == "<" && eq == "!") {
            if(n<m) {
                answer = 1;
            } else {
                answer = 0;
            }
        } if (ineq == ">" && eq == "=") {
            if(n>=m) {
                answer = 1;
            } else {
                answer = 0;
            } if(ineq == ">" && eq == "!") {
                if(n>m) {
                    answer = 1;
                } else {
                    answer = 0;
                }
            }
        }
        return answer;
    }
}

두 번째 코드

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;
        if(ineq.equals("<") && eq.equals("=")) {
            answer = n<=m ? 1 : 0;
        } else if(ineq.equals("<") && eq.equals("!")) {
            answer = n<m ? 1 : 0;
        } else if(ineq.equals(">") && eq.equals("=")) {
            answer = n>=m ? 1 : 0;
        } else if(ineq.equals(">") && eq.equals("!")) {
            answer = n>m ? 1 : 0;
        }
        return answer;
    }
}

최종 코드

느낀 점

처음 단순히 조건 하나하나 조건문을 통해 작성했다가 &&로 묶을 수 있겠다 싶어 묶어서 좀 더 단순하게 만들어 제출하니 통과되지 않았다.
무엇이 문젠가 찾아보니 String에서 값을 비교할 때 ==, String.equals() 두 가지 방법이 존재한다는 것을 잊고 있었다.
String을 비교할 때 ==로 비교하면 해당 주소값을 비교하고, String.equals()로 비교하면 그 데이터 자체를 비교하기에 해당 문제에서는 equals() 함수로 비교하는 게 맞았다.

String 클래스안에 있는 equals라는 메서드를 사용하면
두 비교대상의 주소 값이 아닌 데이터값을 비교하기 때문에
어떻게 String을 생성하느냐에 따라 결과가 달라지지 않고 정확한 비교를 할 수 있습니다.

따라서 String을 비교할 때는 equals로 바꿔주고 삼항연산자를 사용하여 좀 더 단순한 코드로 짤 수 있었다.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글