본문 바로가기

Chapter01/고딩데스드

[고딩데스드] 조건 문자열

코딩테스트 연습 > 코딩 기초 트레이닝 > 조건 문자열

조건 문자열


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

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

 

 

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

 

 

다른사람의 풀이

 

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;
    }
}

 

BiFunction

: Java의 함수형 인터페이스(Functional Interface) 로 두 개의 인수를 받아들이고 결과를 반환하는 함수를 나타냄. 이름에서 알 수 있듯 "Bi"는 두 개의 인수를 의미하며, "Function"은 함수.

사용예시

@FunctionalInterface
public interface BiFunction<T, U, R> {
    R apply(T t, U u);
}
  • T: 첫 번째 입력 매개변수의 유형을 나타냅니다.
  • U: 두 번째 입력 매개변수의 유형을 나타냅니다.
  • R: 결과의 유형을 나타냅니다.

따라서 BiFunction은 apply 메서드를 통해 두 개의 입력을 받아들이고 결과를 반환합니다. 이는 함수형 프로그래밍에서 매우 유용하며, 주로 두 개의 값에 대한 변환 또는 연산을 수행하는 데 사용됩니다.

예를 들어, (a, b) -> a + b는 두 개의 정수를 받아들여 그 합을 반환하는 BiFunction입니다. 이를 사용하여 biFunction.apply(3, 5)를 호출하면 결과로 8을 반환합니다.