본문 바로가기

알고리즘/백준

[백준] 3052 - 나머지

반응형

3052번 문제

서로 다른 값이 몇 개 있는지 출력하는 방법을 이것저것 시도해보았지만 도저히 떠오르는 게 없어서 방법을 찾아보게 되었다. 그러다 HashSet을 이용하면 쉽게 해결할 수 있다는 것을 알게 되었다.

 

HashSet

 

HashSet은 Set 인터페이스의 구현 클래스인데, 중복되는 데이터를 자동으로 제거해준다는 장점이 있다.

 

그런 점에서 서로 다른 값이 몇 개 있는지 출력하는 이 문제에서 딱 필요한 것이었다.

 

1. Scanner를 이용한 방법

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

public class Main{
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        Integer[] num = new Integer[10];
        Set<Integer> set = new HashSet<Integer>();
 
        for(int i=0; i<=9; i++){
            num[i] = sc.nextInt();
            set.add(num[i] % 42);
        }
        System.out.println(set.size());
       
        sc.close();
    }
}

 

2. BufferedReader를 이용한 방법

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;

public class Main{
    public static void main(String[] args)throws IOException{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        Integer[] num = new Integer[10];
        HashSet<Integer> set = new HashSet<Integer>();

        for(int i=0; i<num.length; i++){
            num[i] = Integer.parseInt(br.readLine());
            set.add(num[i] % 42);
        }
        System.out.println(set.size());

        br.close();
    }
}

HashSet에 num[i]%42를 한 값을 넣어주고 HashSet이 자동으로 중복을 제거해주기 때문에 set.size()를 이용해서 크기를 구하면 된다.

 

 

참고 출처 : https://coding-factory.tistory.com/554

반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1546 - 평균  (0) 2024.02.20
[백준] 10811 - 바구니 뒤집기  (0) 2024.02.19
[백준] 5597 - 과제 안 내신 분..?  (0) 2024.02.17
[백준] 10813 - 공 바꾸기  (0) 2024.02.16
[백준] 10810 - 공 넣기  (0) 2024.02.15