백준

[JAVA] 백준 3052번 나머지

DEV장화 2023. 3. 13. 15:53
728x90
반응형
문제

 

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

 

 

입력

 

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

 

 

풀이
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = 0;
        int[] b = new int[10];

        for (int i = 0; i < 10; i++) {
            int input = scanner.nextInt();
            a = input%42;
            b[i] = a;
        }

        b = Arrays.stream(b).distinct().toArray();

        System.out.println(b.length);
   }
}

 

1.

int a = 0;
int[] b = new int[10];

입력받은 수를  42로 나눈 나머지 값을 넣어줄 a 와 그 값들을 넣어줄 배열 b를 선언한다.

 

2.

for (int i = 0; i < 10; i++) {
    int input = scanner.nextInt();
    a = input%42;
    b[i] = a;
}

 

입력받은 수와 42의 나머지 값을 a 안에 넣어주고 b 배열 안에 바로 넣어준다.

 

 

3.

b = Arrays.stream(b).distinct().toArray();

System.out.println(b.length);

 

stream을 사용하여 중복 제거를 해준다.

.distinct 는 중복제거고 toArray는 배열로 만들어준다는 의미이다.

 

그리고 중복 값들이 제거 된 b의 길이를 출력해준다.

 

728x90
반응형