알고리즘/백준

3052 나머지

ukkkk7 2023. 9. 5. 22:51
728x90
반응형

 

 

여러가지 풀이법이 있었다.

 

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
		
       //나누는 수가 42이기때문에 크기가 42인 배열 생성 
       boolean[] arr = new boolean[42];
       int count = 0;
	
    //10개의 수 입력 받기
    for(int i = 0; i < 10; i++){
		
        //입력받은 숫자 % 42 = 나머지일때  나머지 값이 같다면 동일한 배열을 초기화 하는 연산이 된다.
        arr[(sc.nextInt()) % 42] = true;

    }

    for (boolean value : arr){
		
        value에 배열값을 담고 true인 값만 if문으로 조건을 걸어 숫자를 세면 서로 다른 숫자들만 count가 증가
        if (value){
            count++;

        }
    }

        System.out.println(count);

    }
}

 

 

 

HashSet을 이용하면 코드의 길이가 확 줄어든다...컬렉션에는 익숙하지 않아서 생각조차 못한 방법

 

Set은 중복을 허용하지 않기 때문에 값을 담으면 알아서 중복된 값을 걸러준다 이후 size만 출력해주면 해결..

 

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));
       HashSet<Integer> h = new HashSet<Integer>();


    for(int i = 0; i < 10; i++){
	
        h.add(Integer.parseInt(br.readLine()) % 42 );

    }

        System.out.println(h.size());

    }
}
728x90
반응형