programmers.co.kr/learn/courses/30/lessons/1845

 

코딩테스트 연습 - 폰켓몬

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. �

programmers.co.kr

문제해설

  • nums에 폰켓몬 번호가 주어짐 (같은 번호는 같은 폰켓몬)
  • 고를 수 있는 폰켓몬은 nums의 갯수 / 2 
  • 최대한 result 가지의 폰켓몬을 고르는 방법 

sol

  • Set을 이용하여 구현 
  • 중복제거 한 Set의 갯수와 nums/2 의 갯수 중 더 큰 값이 답.

 

C++ 

#include <vector>
#include <set>
#include <iostream>
using namespace std;

int solution(vector<int> nums)
{
    int answer = 0;
    set<int> s;
    for(int i = 0 ; i < nums.size() ; i++)
    {
        s.insert(nums[i]);
    }
  
    int com = nums.size()/2;
    if(s.size() > com )
    {
        answer =com;
    }
    else
    {
        answer = s.size();
    }
    
    return answer;
}

Java 

  • Java는 C++의 set이 아닌 HashSet을 씀
import java.util.*;

public class 프로그래머스Lv2_폰켓몬_HashSet {

 
    static int solution(int[] nums) 
    {
        int answer = 0;
        HashSet<Integer> s = new HashSet<Integer>();
        //set<integer> s;
        for(int i = 0 ; i<nums.length ;i++)
        {
        	s.add(nums[i]);
        }
        int tempNum = nums.length /2;
        if(s.size() > tempNum )
        	answer = tempNum;
        else
        	answer = s.size();
        
        return answer;
   
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	 
		int nums1 []= {3,1,2,3}; 
		solution(nums1); 
	}
	
}

+ Recent posts