반응형
📖 문제
다음은 배열 항목 중에서 최대값 또는 최소값을 찾는 코드입니다.
maxOrMin() 메소드를 호출할 때 빈 곳에 들어갈 람다식을 작성해보세요.
📦 예제 클래스
Operator.java
public interface Operator {
public int apply(int x, int y);
}
Example.java
public class Example {
private static int[] scores = { 10, 50, 3 };
public static int maxOrMin(Operator operator) {
int result = scores[0];
for (int score : scores)
result = operator.apply(result, score);
return result;
}
public static void main(String[] args) {
int max = maxOrMin(/* 빈 공간 */);
System.out.println("최대값 : " + max);
int min = maxOrMin(/* 빈 공간 */);
System.out.println("최소값 : " + min);
}
}
📌 예제 정답
public class Example {
private static int[] scores = { 10, 50, 3 };
public static int maxOrMin(Operator operator) {
int result = scores[0];
for (int score : scores)
result = operator.apply(result, score);
return result;
}
public static void main(String[] args) {
int max = maxOrMin((x, y) -> Math.max(x, y));
System.out.println("최대값 : " + max);
int min = maxOrMin((x, y) -> Math.min(x, y));
System.out.println("최소값 : " + min);
}
}
💻 실행 결과
최대값 : 50
최소값 : 3
💬 코드 설명
- Operator는 두 개의 int 값을 받아 하나의 int 값을 반환하는 함수형 인터페이스입니다.
- maxOrMin() 메서드는 람다식을 통해 비교 연산 전략을 전달받고, 배열을 순회하며 누적 비교를 수행합니다.
- Math.max(x, y)는 두 수 중 큰 값을, Math.min(x, y)는 작은 값을 반환합니다.
- 이 구조는 최대값/최소값 구하기라는 공통 작업을 추상화하고, 람다로 유연하게 처리하는 예제입니다.
💡 학습 포인트
- 함수형 인터페이스를 인자로 받는 설계 연습
코드의 로직을 직접 구현하는 대신, **전략(비교 방식)**을 외부에서 전달받는 구조입니다. - 람다식으로 동작 커스터마이징
maxOrMin()은 내부 로직은 고정되어 있지만, 동작 방식은 전달받은 람다식에 따라 달라집니다. - 코드 재사용성 향상
같은 구조로 최대값과 최소값을 한 번에 구현할 수 있어 유연성과 재사용성이 높아집니다.
📌 마무리 정리
- 사용자님의 답안은 함수형 인터페이스와 람다식을 활용한 전략 전달 방식을 완벽히 구현했습니다.
- maxOrMin()처럼 공통 로직을 일반화하고, 람다식으로 행동을 분리하는 방식은 실무에서도 매우 유용하게 쓰입니다.
- 자바의 함수형 프로그래밍 접근 방식에 익숙해질 수 있는 좋은 연습 예제입니다.
'Java > 연습문제' 카테고리의 다른 글
자바 연습문제 - Stream을 이용한 문자열 필터링 (대소문자 무시) (0) | 2025.05.26 |
---|---|
자바 연습문제 - 메서드 참조(Method Reference)로 평균 계산 (0) | 2025.05.22 |
자바 연습문제 - 람다식과 함수형 인터페이스로 과목별 평균 점수 계산 (0) | 2025.05.22 |
자바 연습문제 - 사용자 정의 함수형 인터페이스 Function 구현 (0) | 2025.05.22 |
자바 연습문제 - 람다식을 이용한 Thread 실행 코드 작성 (1) | 2025.05.22 |
자바 연습문제 - Comparator를 이용한 TreeSet 정렬 기준 지정 (0) | 2025.05.22 |