-
[알고리즘] 프로그래머스 1단계 - 폰켓몬Algorithm 2024. 5. 2. 16:24
프로그래머스 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/1845
문제 설명
당신은 최대한 다양한 종류의 폰켓몬을 가지길 원하기 때문에, 최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택하려 합니다. N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요.
예시
nums
[3,3,3,2,2,4]
result
3distinct api를 통한 풀이 방법
import java.util.stream.IntStream; class Solution { public int solution(int[] num) { int answer = 0; // 중복 숫자 제거 int count = (int) IntStream.of(num).distinct().count(); // 포켓몬 종류 수와 선택 포켓몬 수 중 작은 값 리턴 return Math.min((num.length / 2), count); } }
책에서 Set 자료구조를 통한 풀이 법
public int solution(int[] num) { // 자료 구조 set을 이용하여 중복 제거 HashSet<Integer> set = Arrays.stream(num).boxed().collect(Collectors.toCollection(HashSet::new)); // 포켓몬 총 수 int n = num.length; // 선택할 포켓몬의 수 int k = n / 2; // 중복 제거 포켓몬의 종류 수와 선택할 포켓몬의 수 중 작은값 리턴 return Math.min(k, set.size()); }
'Algorithm' 카테고리의 다른 글
[알고리즘] 프로그래머스 1단계 - [PCCE 기출문제] 9번 / 이웃한 칸 (0) 2024.05.07 [알고리즘] 프로그래머스 1단계 - 가장 많이 받은 선물 (0) 2024.05.06 [묘공단] 코딩 테스트 합격자 되기 - 집합 (0) 2024.05.02 [알고리즘] 프로그래머스 1단계 - 수박수박수박수박수박수? (2) 2024.05.01