어흥

[프로그래머스] 폰켓몬 (C++, Java) 본문

알고리즘/프로그래머스

[프로그래머스] 폰켓몬 (C++, Java)

라이언납시오 2022. 1. 2. 15:56
728x90
반응형

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/1845?language=java 

 

코딩테스트 연습 - 폰켓몬

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

programmers.co.kr

1. 주의할 점

- 무엇을 출력해야하는지 잘 살펴본다 (조합의 수로 생각했다가 문제만 여러번 다시 읽었다..)

 

2. 구현

- Map을 이용해서 <폰켓몬 번호, Nums에 담긴 수>를 저장한다

- 폰켓몬의 종류와(Map의 크기) 골라야하는 폰켓몬의 수(Nums/2)를 비교하고, 둘 중 작은것을 반환한다

 

[C++]

#include <vector>
#include <map>
#include <cmath>
using namespace std;

int solution(vector<int> nums)
{
    int answer = 0;
    map<int,int> m;
    for(int val : nums){
        if(m.find(val)==m.end())    m[val]=1;
        else    m[val]++;
    }
    return min(nums.size()/2,m.size());
}

 

[Java]

import java.util.*;
import java.lang.*;
import java.io.*;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        Map<Integer,Integer> map = new HashMap<>();
        for(int val: nums){
            if(map.containsKey(val))    map.put(val,map.get(val)+1);
            else    map.put(val,1);
        }
        return Math.min(nums.length/2,map.size());
    }
}
728x90
반응형
Comments