Algorithm

[Programmers] Hash > 폰켓몬 (Java)

yerinpark 2023. 10. 12. 20:05

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 요약

총 N 마리 포켓몬 중 N/2마리를 가져갈 수 있다.

폰켓몬 종류의 수가 최대한 다양하게 가질 수 있도록 선택한다.

 

구현 착안

가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아야하므로, 중복을 허용하지 않는 hashset을 사용하여 구현한다.

 

구현 순서

다음과 같은 순서로 생각해볼 수 있다.

1. int[]의 nums를 hashset으로 담아주어 중복을 제거한다.

2. answer는 hashset의 크기가 될 것이다.

3. 그러나, answer의 최댓값은 N/2 (홍 박사님이 허락해준 폰켓몬의 최댓값) 이다.

4. if문으로 hashset의 크기가 N/2보다 크면 answer는 N/2이다.

5. answer를 return해준다.

 

제출 코드

import java.util.HashSet;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;

        HashSet<Integer> set = new HashSet<>();

        for(int num : nums) {
            set.add(num);
        }
        
        answer = set.size();

        if (nums.length / 2 < set.size()) answer = nums.length / 2;

        return answer;
    }
}

 

'Algorithm' 카테고리의 다른 글

[Programmers] 동적 계획법 > 정수 삼각형 (Java)  (0) 2023.10.13
동적 계획법(dynamic programming)  (1) 2023.10.13
[Programmers] 게임 맵 최단거리 Java  (0) 2023.10.10
[Programmers] 타겟 넘버 Java  (0) 2023.10.09
DFS와 BFS  (0) 2023.10.09