본문 바로가기
  • 소소한 개발자 이야기
Algorithm Study/Programmers

(프로그래머스) 폰켓몬

by Siwan_Min 2024. 9. 22.
728x90

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

 

프로그래머스

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

programmers.co.kr

 

오랜만에 프로그래머스에서 코딩테스트 문제를 풀어보았습니다. 

너무 오랜만에 푸는거고 취업 준비할때는 C++  로 코딩테스트를 준비했었는데

취업 후에는 주로 Java를 사용하다보니 Java 로 문제를 풀어보았는데 뭔가 익숙하지가 않은거 같다는 느낌이 들었다. 

(꾸준히 연습할 필요가 있음.) 

 

폰켓몬 문제의 핵심은 주어진 N마리의 폰켓몬 중 절반 즉, N/2 마리의 폰켓몬을 가져갈수 있고 또 얼마나 많은 종류의 폰켓몬을 가져갈 수 있냐가 핵심이다. 

 

다시 정리하자면

1. N마리의 폰켓몬이 있음.

2. N/2 만큼 가져올 수 있음 

3. 많은 종류의 폰켓몬을 가져와야 함. 

 

예시 

[꼬부기, 피카츄, 파이리, 야도란] 

이렇게 있으면 네 마리중 절반 2마리를 가져올 수 있고 두 종류의 폰켓몬을 가져올 수 있다. 

 

[피카츄, 피카츄, 피카츄, 피카츄]

이렇게 있으면 피카츄만 2마리 가져올수 있는거다. 

 

 

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        // 중복제거 
        Set<Integer> uniqueSet = new HashSet<>();
        for (int num : nums) {
            uniqueSet.add(num);
        }
        
        int uniqueSize = uniqueSet.size();
        int halfOfNumSize = nums.length / 2;
        
        return Math.min(uniqueSize, halfOfNumSize);
    }
}

 

728x90

댓글