Algorithm/BOJ

[Bronze II/JAVA] 3052 나머지

carsumin 2024. 10. 23. 16:33

https://www.acmicpc.net/problem/3052

 

 

 

  • 배열과 HashSet으로 풀이할 수 있음
  • 배열로 입력받아서 이중for문을 돌려서 값이 같은 경우 cnt를 증가시키고, cnt가 0이면 값이 다르다고 볼 수 있기 때문에 diff를 카운트해서 서로 다른 나머지를 체크했다
  • 문제는 입력값이 10개뿐이였지만 입력개수가 많아지는 경우 효율성이 떨어지기 때문에 다른 풀이 방법을 찾아봐야겠다

 

 

내 풀이

 

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[10];
        int diff = 0;
        
        for(int i=0; i<10; i++){
            arr[i] = sc.nextInt() % 42;
        }
        
        for(int i=0; i<10; i++){
            int cnt = 0;
            for(int j=i+1; j<10; j++){
                if(arr[i]==arr[j]) cnt++; //값이 같으면 cnt증가
            }           
            if(cnt==0) diff++; //값이 다른 경우 diff증가
        }
        sc.close();
        System.out.println(diff);
    }
}