[백준/Java] 10430번 나머지

은엽·2023년 10월 31일

문제풀이

목록 보기
16/33

🚗Problem

https://www.acmicpc.net/problem/10430

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?

(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?

세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

간단하게 주어진 문제의 수식의 결과를 출력하는 프로그램을 작성한다.

Solution

문제에 대해 생각해보면 (A + B) % C(A % C) + (B % C)는 교환법칙이 성립하므로 당연히 같은 값을 갖는다. (A % C) + (B % C)CN번 더 나누어도 나머지는 똑같다. 그러므로 (A+B)%C는 ((A%C) + (B%C))%C 와 같을까?는 참이다.
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?도 똑같이 교환 법칙이 성립한다. 또한 (A x B) % C를 몇 번이고 C로 나누어도 나머지는 똑같으므로 이 명제도 참이다.

문제 풀이의 내용보다는 자바 문법에 집중해서 풀이했다. 입력값을 BufferedReader를 이용해 받았는데 평소처럼 StringTokenizer를 사용하지 않고 IntStream을 이용해서 풀이했다.

IntStream

IntStream은 Java 8부터 추가된 스트림 API중 하나로, 기본 정수 값에 대한 스트림을 처리하는데 사용된다.
스트림을 사용하면 병렬 처리가 가능하므로 대용량 데이터를 효과적으로 처리할 수 있다는 장점이 있다. 또한 데이터 처리 파이프라인을 구성해서 필터링, 매핑, 정렬, 그룹화 등 다양한 연산을 순차적으로 또는 병렬로 실행할 수 있다.
평소에 스트림 문법을 많이 사용해보지 않아서 익숙해져보고자 사용해보았다.

Java Code

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.stream.IntStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        int[] arr = Arrays.stream(input.split(" "))
                    .mapToInt(Integer::parseInt)
                    .toArray();
        System.out.println((arr[0] + arr[1]) % arr[2]);
        System.out.println(((arr[0] % arr[2]) + (arr[1] % arr[2])) % arr[2]);
        System.out.println((arr[0] * arr[1]) % arr[2]);
        System.out.println(((arr[0] % arr[2]) * (arr[1] % arr[2])) % arr[2]);
    }
}
profile
어떻게 했더라

0개의 댓글