CodingTest/Programmers

[프로그래머스 Lv 1] 폰켓몬

남쫑 2024. 11. 5. 19:46

링크

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 요약

폰켓몬의 종류가 담긴 배열 nums가 있고, 여기서 가져갈 수 있는 폰켓몬의 최댓값은 nums.length / 2 만큼이다.

 

나는 최대한 다양한 종류의 폰켓몬을 가져가길 원하기 때문에 최대한 많은 종류를 포함해서 nums.length / 2 마리를 고르려 한다.

 

이 때 가져갈 수 있는 최대 폰켓몬의 종류 갯수를 구해라. (중복으로 가져가면 해당 폰켓몬의 개수는 무조건 1이다.)

 

입출력 예시

 

알고리즘 풀이 순서

1. 가져갈 수 있는 폰켓몬의 최댓값을 구하기 위해 먼저 nums.length를 2로 나눈 값을 max에 대입한다.

2. 중복을 제거한 값을 구하기 위해 Set을 사용해서 nums의 값들을 담는다.

3. 중복이 제거된 Set과 max의 크기를 비교하여 더 작은 것을 리턴한다.

 

코드

import java.util.HashSet;

class Solution {
    public int solution(int[] nums) {
        int max = nums.length / 2;
        
        HashSet<Integer> numsSet = new HashSet<>();
        
        for (int n : nums) 
            numsSet.add(n);
        
        if (numsSet.size() > max)
            return max;
        else
            return numsSet.size();
    }
}

'CodingTest > Programmers' 카테고리의 다른 글

[프로그래머스 Lv 1] 두 정수 사이의 합  (6) 2024.11.07
[프로그래머스 Lv 1] 2016년  (7) 2024.11.06