[프로그래머스] Lv0. 조건 문자열

lemythe423·2023년 10월 28일
0
post-thumbnail

🔗

풀이

switch문의 특징인 해당하는 case가 실행되면 그 아래 case들이 전부 다 실행되는 걸 간과한 풀이였다.

기본적으로 해당 조건문의 case가 실행되고, 그 조건문 안에서 if문을 다시 실행해서 값을 비교하는데 이게 참이라면 return 1을 반환하고 종료되어야 한다. 문제는 여기까지만 생각했었다는 점이다. 만약 break가 없는 경우 case 내부의 if 문을 만족하지 않는다면 그대로 아래의 case문으로 내려가게 된다. 연쇄적으로 모두 실행되기 때문이다. 결국 의도와는 다르게 아래 엉뚱한 case 문의 if 문에서 조건을 만족하고 갑자기 1을 반환하게 되는 것이다.

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        String tmp = ineq + eq;
        switch (tmp) {
            case ">=": if (n >= m) { return 1; }; break;
            case "<=": if (n <= m) { return 1; }; break;
            case ">!": if (n > m) { return 1; }; break;
            case "<!": if (n < m) { return 1; }; break;
            default: return 0;
        }
        return 0;
    }
}

이건 일반 if ~ else 문을 사용한 풀이. else문 사용을 지양하라고 하는데 이런 상황에서는 switch 문으로 바꾸는 게 나은건지 모르겠다.

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        String tmp = ineq + eq;

        if (tmp.equals(">=") && n >= m) {
            return 1;
        } else if (tmp.equals("<=") && n <= m) {
            return 1;
        } else if (tmp.equals(">!") && n > m) {
            return 1;
        } else if (tmp.equals("<!") && n < m) {
            return 1;
        } else {
            return 0;
        }
    }
}
profile
아무말이나하기

0개의 댓글