본문 바로가기
알고리즘/프로그래머스

[프로그래머스 / 폰켓몬 / JAVA / 해시]

by KDW999 2023. 3. 23.

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

 

프로그래머스

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

programmers.co.kr

 

문제 접근

문제를 읽으면서 뽑을 수 있는 갯수의 경우의 수를 다 찾고 그 중에서 뽑는 최대 종을 카운트하려했다.

그러나 뽑는 갯수가 늘어날수록 추가적인 변수나 반복문이 늘어나서 이 부분 해결하기가 쉽지 않더라

일단 종의 수만 세어보려고 Map을 만들고 힌트를 봤는데 종의 수와 뽑을 수 있는 수를 잘 생각해 보라더라

 

즉, 종의 수가 암만 많아도 뽑을 수 있는 수가 적으면 내가 가질 수 있는 최대 폰켓몬 종류는 뽑을 수 있는 수랑 같게 되고

내가 암만 많이 뽑을 수 있어도 종의 수가 더 적다면 내가 가질 수 있는 최대 폰켓몬 종류는 종의 수가 된다.

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        
        Map<Integer, Integer> map = new HashMap<>();
        for(int n : nums) map.put(n, n);
       
        if(nums.length/2 < map.size()) return nums.length/2;
        else if(nums.length/2 > map.size()) return map.size();
        else return map.size();
    }
}

 

다른 사람들은 같은 풀이 방식에 Set이나 List를 사용하였더라

댓글