문제
https://school.programmers.co.kr/learn/courses/30/lessons/1845
풀이
1. nums배열의 값의 종류를 뽑아야 하므로, 1번 순회하여 HashMap에 담는다. 시간복잡도 O(n)
2. 종류 수가 nums.length / 2보다 크면 nums.length / 2를 반환. 아니면 종류 수 그대로 반환한다.
import java.util.HashMap;
class Solution {
public int solution(int[] nums) {
int answer = 0;
HashMap<Integer, Integer> monsterCount = new HashMap<Integer, Integer>();
for(int monsterKind: nums) {
if(monsterCount.get(monsterKind) != null) {
monsterCount.put(monsterKind, monsterCount.get(monsterKind) + 1);
} else {
monsterCount.put(monsterKind, 1);
answer++;
}
}
answer = answer > (nums.length / 2) ? (nums.length / 2) : answer;
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
프로그래머스 42586번 기능 개발 (0) | 2022.08.08 |
---|---|
프로그래머스 42579번 베스트앨범 (0) | 2022.07.31 |
프로그래머스 42578번 위장 (0) | 2022.07.26 |
프로그래머스 42577번 전화번호 목록 (0) | 2022.07.18 |
프로그래머스 42576번 완주하지 못한 선수 (0) | 2022.07.16 |