문제
(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)
출력
첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.
예시
입력 : 5 8 4
출력
1
1
0
0
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> intList = new ArrayList<Integer>();
intList.add(scanner.nextInt());
intList.add(scanner.nextInt());
intList.add(scanner.nextInt());
System.out.println(calc(intList, (list) -> {
int A = list.get(0);
int B = list.get(1);
int C = list.get(2);
return (A + B) % C;
}));
System.out.println(calc(intList, (list) -> {
int A = list.get(0);
int B = list.get(1);
int C = list.get(2);
return ((A%C) + (B%C))%C;
}));
System.out.println(calc(intList, (list) -> {
int A = list.get(0);
int B = list.get(1);
int C = list.get(2);
return (A*B)%C;
}));
System.out.println(calc(intList, (list) -> {
int A = list.get(0);
int B = list.get(1);
int C = list.get(2);
return ((A%C) * (B%C))%C;
}));
}
public static int calc(List<Integer> intList, Function<List<Integer>, Integer> func) {
return func.apply(intList);
}
}
핵심
알고리즘보다 자바8에 도입된 함수형 프로그래밍 개념을 사용
메서드를 값으로 다뤄 매개변수로 넣었음.