Level. 1
문제
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 수가 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;
String str = ineq + eq;
if(str.equals(">="))
return n>=m;
if(str.equals("<="))
return n<=m;
if(str.equals(">!"))
return n>m;
if(str.equals("<!"))
return n<m;
return answer;
}
}
다른 풀이
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;
}
}
1. BiFunction
BiFunction Interface는 함수형 프로그래밍을 구현하기 위해 Java 버전 1.8부터 도입된 함수형 인터페이스이다.
두 개의 매개변수를 받아 특정 작업을 수행 후 1개의 객체 값을 반환한다.
FunctionalInterface
public interface BiFunction<T, U, R> {
R apply(T t, U u);
default <V> BiFunction<T, U, V> andThen(Function<? super R, ? extends V> after) {
Objects.requireNonNull(after);
return (T t, U u) -> after.apply(apply(t, u));
}
}
- T , U : 첫 번째 두 번째 매개변수
- R : 반환 타입
apply()
R apply(T t, U u);
두 개의 매개변수를 전달받아 특정 작업을 수행 후 값을 반환한다.
- 사용예시
import java.util.function.BiFunction;
public class Main {
public static void main(String args[])
{
// BiFunction to add 2 numbers
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
// Implement add using apply()
System.out.println("Sum = " + add.apply(2, 3));
// BiFunction to multiply 2 numbers
BiFunction<Integer, Integer, Integer> multiply = (a, b) -> a * b;
// Implement add using apply()
System.out.println("Product = " + multiply.apply(2, 3));
}
}
2. Map 초기화 - Map.of
- 기존방법
private Map<Integer, String> map = new HashMap<>() {
{
put(1, "one");
put(2, "two");
put(3, "three");
}
};
-Map.of()
private Map<Integer, String> map = Map.of(
1, "own",
2, "two",
3, "three"
);
Java 9 이상부터 Map.of()를 통해 간결하게 Map을 초기화할 수 있게 되었다.
https://school.programmers.co.kr/learn/courses/30/lessons/181934
https://www.geeksforgeeks.org/java-bifunction-interface-methods-apply-and-addthen/
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 문자열 여러 번 뒤집기 / StringBuilder.reverse(), toCharArray() (0) | 2023.09.09 |
---|---|
[프로그래머스(Java)] 배열 만들기 6 / Stack (0) | 2023.09.04 |
[프로그래머스(Java)] 왼쪽 오른쪽 / Stream (0) | 2023.09.03 |
[프로그래머스(Java)] 삼각형의 완성조건 (2) (0) | 2023.09.03 |
[프로그래머스(Java)] 구슬을 나누는 경우의 수 - 부동소숫점문제 (1) | 2023.09.03 |