elesis's haunt

3052 나머지 본문

백준~문풀 후 최적화 추가~/단계별로 풀어보기

3052 나머지

elesis 2021. 9. 24. 10:23

* BufferedReader, 배열, 메소드 정의

import java.io.*;
import java.util.Arrays;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		for(int i=0; i<10; i++) {
			nums[i] = Integer.parseInt(br.readLine())%42;
		}

		Arrays.sort(nums);
		System.out.println( removeDup(nums) );
	}
	
	public static int removeDup(int[] arr) {
		return removeDup(arr, arr.length);
	}
	public static int removeDup(int[] arr, int n) {
		// 0개나 1개면 중복제거를 할 필요가없으니 그대로 갯수 반환
		if (n==0 || n==1){  
            return n;  
        }  
		
		// 임시배열 생성
        int[] tempA = new int[n];
        // 배열진행용 변수
        int j = 0;  
        
        // round는 배열크기 -1만큼 진행됨
        for (int i=0; i<n-1; i++) {  
        	// 값이 서로 다르면 임시배열에 저장
            if (arr[i] != arr[i+1]) { 
                tempA[j++] = arr[i];  
            }  
        }  
        // for문에서 배열안터지게 하려다가 비교못한 마지막 arr[n-1]을 담아줌	
        tempA[j++] = arr[n-1];  
        
        // temp의 배열크기만큼의 값을 arr에 다시 담음
        for (int i=0; i<j; i++) {  
            arr[i] = tempA[i];  
        }  
        // dup 아닌 것의 갯수를 반환
        return j;  				  
	}
}

* HashSet

mport java.util.HashSet;
import java.io.*;
 
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.print(h.size());
	}
}

 

* 배열, 

import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        boolean[] arr = new boolean[42];
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        for(int i = 0 ; i < 10 ; i++) {
            arr[Integer.parseInt(br.readLine()) % 42] = true;
        }
        
        int count = 0;
        for(boolean value : arr) {
            if(value){    // value 가 true 라면
                count++;
            }
        }
        System.out.println(count);
    }
}

HashSet

  1. 중복되는 원소를 넣을 경우 하나만 저장한다. 즉, 중복원소를 허용하지 않는다.
  2. HashSet 은 순서 개념이 없다. 따라서 Collections.sort() 메소드를 사용할 수 없다. 만약 정렬을 하고 싶다면 리스트로 변환 후 정렬해야한다.

 

저번에 코테할때는 Set 잘 써놓고 막상 요번엔 쓰지도못했다. 쓸수있는건 잘 쓰도록하자...ㅠㅠ!

'백준~문풀 후 최적화 추가~ > 단계별로 풀어보기' 카테고리의 다른 글

8958 OX퀴즈  (0) 2021.09.27
1546 평균  (0) 2021.09.24
2577 숫자의 개수  (0) 2021.09.23
2562 최댓값  (0) 2021.09.23
10818 최소, 최대  (0) 2021.09.16
Comments