[백준] 초보자용 3052번 - 나머지 [HashSet<>()] (java)

팥빵·2025년 4월 11일

Baekjoon

목록 보기
8/49

>>문제 바로가기<<

입력받은 숫자를 42로 나눈 나머지 중,
서로 다른 숫자가 몇개인지 출력하는 문제이다.


> HashSet<자료형>

해당 메소드는 값을 저장했을때
"중복을 포함하지 않고" 값을 저장한다.

당연히 이번 문제의 핵심 메소드이다.

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()값이 정수값이기 때문에
정수값을 정수값으로 변환할 수 없어서, 에러가 나게된다.




맞았습니다!!

profile
반갑습니다

0개의 댓글