본문 바로가기

개발/코테

[JAVA] 조건 문자열

[문제]

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

  • 두 수가 n과 m이라면
    • ">", "=" : n >= m
    • "<", "=" : n <= m
    • ">", "!" : n > m
    • "<", "!" : n < m

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

[내 풀이]

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

* 자바에서 문자열 비교시, == 연산자가 아닌, equals()함수 사용하기

 

[다른 사람 풀이]

import java.util.Map;
import java.util.function.BiFunction;

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        Map<String, BiFunction<Integer, Integer, Boolean>> functions = Map.of(
                ">=", (a, b) -> a >= b,
                "<=", (a, b) -> a <= b,
                ">!", (a, b) -> a > b,
                "<!", (a, b) -> a < b
        );

        return functions.get(ineq + eq).apply(n, m) ? 1 : 0;
    }
}

- Map (key를 통해 value 찾아냄) 사용 !

'개발 > 코테' 카테고리의 다른 글

[JAVA] 이어 붙인 수  (0) 2024.04.11
[JAVA] 주사위게임2  (0) 2024.04.05
[JAVA] 홀짝에 따라 다른 값 반환하기  (0) 2024.04.04
[JAVA] 공배수  (0) 2024.04.04
[JAVA] 두 수의 연산값 비교하기  (0) 2024.04.04