Problem:
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
My Code:
First Method: Using HashSet
Java HashSet class is used to create a collection that uses a hash table for storage. It inherits the AbstractSet class and implements Set interface. HashSet stores the elements by using a mechanism called hashing. HashSet contains unique elements only. HashSet allows null value.
import java.util.HashSet;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class BaekJoon_3052_ver2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashSet<Integer> h = new HashSet<Integer>();
for (int i = 0; i < 10; i++) {
h.add(Integer.parseInt(br.readLine()) % 42);
}
System.out.print(h.size());
}
}
Second Method: Using Array
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class BaekJoon_3052 {
public static void main(String[] args) throws IOException {
boolean[] arr = new boolean[42];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int i = 0 ; i < 10 ; i++) {
arr[Integer.parseInt(br.readLine()) % 42] = true;
}
int count = 0;
for(boolean val : arr) {
if(val){
count++;
}
}
System.out.println(count);
}
}
Input
42
84
252
420
840
126
42
84
420
126
Output
1