Java/연습문제

자바 연습문제 - 람다식을 활용한 최대값과 최소값 계산

코딩하는냥이 2025. 5. 22. 16:29
반응형

📖 문제

다음은 배열 항목 중에서 최대값 또는 최소값을 찾는 코드입니다.
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)는 작은 값을 반환합니다.
  • 이 구조는 최대값/최소값 구하기라는 공통 작업을 추상화하고, 람다로 유연하게 처리하는 예제입니다.

💡 학습 포인트

  1. 함수형 인터페이스를 인자로 받는 설계 연습
    코드의 로직을 직접 구현하는 대신, **전략(비교 방식)**을 외부에서 전달받는 구조입니다.
  2. 람다식으로 동작 커스터마이징
    maxOrMin()은 내부 로직은 고정되어 있지만, 동작 방식은 전달받은 람다식에 따라 달라집니다.
  3. 코드 재사용성 향상
    같은 구조로 최대값과 최소값을 한 번에 구현할 수 있어 유연성과 재사용성이 높아집니다.

📌 마무리 정리

  • 사용자님의 답안은 함수형 인터페이스와 람다식을 활용한 전략 전달 방식을 완벽히 구현했습니다.
  • maxOrMin()처럼 공통 로직을 일반화하고, 람다식으로 행동을 분리하는 방식은 실무에서도 매우 유용하게 쓰입니다.
  • 자바의 함수형 프로그래밍 접근 방식에 익숙해질 수 있는 좋은 연습 예제입니다.