폰켓몬

문제정의


폰켓몬의 갯수 중 절반을 가져갈 수 있을 때, 최대로 가져갈 수 있는 폰켓몬의 종류를 반환하는 문제이다. 같은 종류의 폰켓몬은 같은 자연수 값을 갖는다.

문제풀이


전체 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package level2;

import java.util.HashMap;

public class Ponketmon {

//프로그래머스 문제풀이 level2 폰켓몬
public static void main(String[] args) {
int[] nums = {3, 1, 2, 3};
int answer = 0;
HashMap<Integer, Integer> map = new HashMap<>();
for(int n : nums)
{
map.put(n, map.getOrDefault(n, 0)+1);
}
if(map.size() < nums.length/2)
answer = map.size();
else
answer = nums.length/2;

System.out.println(answer);
}

}
필자는 맵을 활용하여 문제를 풀었다. 종류마다 폰켓몬이 몇 마리가 있는지 센 다음에, 종류가 폰켓몬의 종류의 절반보다 작으면 맵의 사이즈를 반환하고 아닌 경우, 전체 폰켓몬 수의 절반을 답으로 하였다.

최종 시간복잡도는 \(O(n)\)이다.

테스트