
입력받은 숫자를 42로 나눈 나머지 중,
서로 다른 숫자가 몇개인지 출력하는 문제이다.
해당 메소드는 값을 저장했을때
"중복을 포함하지 않고" 값을 저장한다.
당연히 이번 문제의 핵심 메소드이다.
HashSet<integer> hs = new HashSet<>(); // HashSet 선언
hs.add(10);
hs.add(20);
hs.add(20); // 중복된 값이므로 추가 안됨
System.out.print(hs.size()); // 정수 2 출력(10, 20)
HashSet 함수의 적절한 예시이다.
이를 토대로 백준 문제를 수월하게 풀 수 있다.
import java.io.*;
import java.util.HashSet;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
HashSet<Integer> hs = new HashSet<>();
int[] Arr = new int[10];
for(int i=0; i<10; i++){
Arr[i] = Integer.parseInt(br.readLine());
}
for(int j=0; j<10; j++){
hs.add(Arr[j]%42);
}
bw.write(String.valueOf(hs.size()));
br.close();
bw.flush();
bw.close();
}
}
따라서 완성된 코드는 이렇게 짜여진다.
추가로
bw.write(String.valueOf(hs.size()));
대신에
bw.write(hs.size() + "");
해당 코드를 입력해도 정상출력한다.
+) 틀린 코드
bw.write(Integer.parseInt(hs.size())); // 컴파일 에러
해당 코드는 이미 hs.size()값이 정수값이기 때문에
정수값을 정수값으로 변환할 수 없어서, 에러가 나게된다.
맞았습니다!!