본문 바로가기

Algorithm/Programmers

Level 1: 폰켓몬, 배열의 중복 제거

이 문서의 내용

    문제 풀이: 배열에 대한 중복 제거

    가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성합니다.

    폰켓몬의 종류는 int[]로 전달됩니다.

    public int solution(int[] nums)

    문제를 해결하기 위한 키워드는 다음과 같습니다.

    • 입력 배열의 크기 / 2는 선택 할 수 있는 폰켓몬의 수입니다. 최적의 경우 이 숫자만큼 폰켓몬의 종류가 존재합니다.
    • 중복을 제거한 배열의 크기는 폰켓몬의 종류입니다. 
    import java.util.*;
    import java.util.stream.Collectors;
    
    class Solution {
    	public int solution(int[] nums) {
    		HashSet<Integer> o = new HashSet<>(Arrays.stream(nums).boxed().collect(Collectors.toList()));
    		int max = nums.length / 2;
    		return Math.min(max, o.size());
    	}
    }
    코드 비고
    Line 6 new HashSet<> 중복을 제거한 Collection을 얻기 위해서 HashSet을 사용합니다.
    int[] 배열을 Collection으로 캐스팅하고 HashSet을 생성합니다.
    Line 7 nums.length / 2 입력 배열의 크기 / 2는 선택 할 수 있는 폰켓몬의 수입니다. 
    Line 8 Math.min(max, o.size) 문제에서 요구하는 결과입니다.
    선택 할 수 있는 폰켓몬의 수는 중복을 제거한 배열의 크기보다 클 수 없습니다.