ALGORITHM/코딩 기초 트레이닝

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

jki09871 2024. 7. 29. 19:14

 

아무리 쉬운 코드도 리뷰 합니다.
문제 설명
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.

두 수가 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

입출력 예
ineq	eq	n	m	result
"<"	"="	20	50	1
">"	"!"	41	78	0

입출력 예 설명
입출력 예 #1
20 <= 50은 참이기 때문에 1을 return합니다.

입출력 예 #2
41 > 78은 거짓이기 때문에 0을 return합니다.
 ----------------------------------------------------------------------------------
 class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;

        String equals = ineq + eq;

        if (equals.equals("<=")) {
            answer = n <= m ? 1 : 0;
        } else if (equals.equals(">=")) {
            answer = n >= m ? 1 : 0;
        } else if (equals.equals(">!")) {
            answer = n > m ? 1 : 0;
        } else {
            answer = n < m ? 1 : 0;
        }
        return answer;
    }
}

설명

  1. equals 변수에 ineq 문자열과 eq 문자열을 합쳐서 저장 해줍니다.
  2. if(조건문)을 이용해서 조건이 맞으면 3항 연산자를 통해 한번 더 비교연산자를(<,>,==,!=,<=,>=)를 이용해
    맞다면 answer 변수에 1을 담아주고 틀리다면 0을 담아줍니다.

중요코드

  • 처음에는 ineq 변수에 담긴 문자열과 eq에 담긴 문자열을 따로 비교를 했다.
    (if (ineq.equals("<") && eq.equals("=")) 이런식으로) 근데 equals 변수에 두게 문자열을 더해서
    조금 더 쉽게 조건문을 만들 수 있었다.

실행결과

정확성 테스트
테스트 1 통과 (1.37ms, 74.5MB)
테스트 2 통과 (1.54ms, 71.6MB)
테스트 3 통과 (1.37ms, 72.4MB)
테스트 4 통과 (1.10ms, 75.7MB)
테스트 5 통과 (1.00ms, 75.7MB)
테스트 6 통과 (1.08ms, 80.3MB)
테스트 7 통과 (1.78ms, 79.3MB)
테스트 8 통과 (1.76ms, 77.1MB)
테스트 9 통과 (1.08ms, 72.8MB)
테스트 10 통과 (1.12ms, 73.7MB)
테스트 11 통과 (1.57ms, 74.1MB)
테스트 12 통과 (1.19ms, 77.1MB)
테스트 13 통과 (1.25ms, 67.3MB)
테스트 14 통과 (0.93ms, 65.9MB)
테스트 15 통과 (1.62ms, 76.2MB)
테스트 16 통과 (1.44ms, 71.6MB)
테스트 17 통과 (1.05ms, 72.6MB)
테스트 18 통과 (1.69ms, 77.2MB)
테스트 19 통과 (1.18ms, 84.1MB)
테스트 20 통과 (0.99ms, 72.6MB)
테스트 21 통과 (1.70ms, 76.8MB)
테스트 22 통과 (1.22ms, 72.6MB)
테스트 23 통과 (1.05ms, 68.7MB)
테스트 24 통과 (1.00ms, 73.3MB)
테스트 25 통과 (1.14ms, 72.2MB)
테스트 26 통과 (1.32ms, 75.6MB)
테스트 27 통과 (1.12ms, 73.5MB)
테스트 28 통과 (1.15ms, 70.9MB)
테스트 29 통과 (1.11ms, 75.5MB)
테스트 30 통과 (1.33ms, 77.1MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0