[Java] 백준 #3052 (1차원 배열)

정상준·2022년 10월 14일
0

백준

목록 보기
35/99
post-thumbnail

📍 출처

출처 : https://www.acmicpc.net/problem/3052

📝 문제

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

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

⌨️ 입력

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

🖨 출력

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

⌨️ 예제 입력 1

1
2
3
4
5
6
7
8
9
10

🖨 예제 출력 1

10

⌨️ 예제 입력 2

42
84
252
420
840
126
42
84
420
126

🖨 예제 출력 2

1

📚 내가 제출한 코드

배열사용

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
                 
      boolean[] arr = new boolean[42];
      int count = 0;

      for(int i = 0 ; i < 10; i++){
        arr[sc.nextInt() % 42] = true; //boolean 기본 값 false
      }

      for(boolean e : arr){
            if(e==true)
                count++;
      }

      System.out.print(count);

    }
}

HashSet사용

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class App {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
                 
      Set<Integer> set = new HashSet<>();

      for(int i = 0 ; i < 10 ; i++){
        set.add(sc.nextInt() % 42);
      }

      sc.close();

      System.out.print(set.size());

    }
}

✏️ 내가 제출한 코드에 대한 설명

  • HashSet : 데이터를 저장하는 자료구조중 하나로 특징으로 중복을 허용하지 않는것이 있다. 중복을 허용하지 않기 때문에 내가 입력받은 값이 이미 이전에 받았던 값이라면 저장되지 않을것이고 그렇기에 지금까지 입력받았던 수를 구하면 문제를 해결할 수 있다.
profile
안드로이드개발자

0개의 댓글