문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
import java.util.*;
class Solution {
public int solution(int[] nums) {
HashMap<Integer, Integer> mon = new HashMap<>();
for(int i = 0; i< nums.length; i++){
mon.put(nums[i], 1);
}
if(mon.size()<nums.length/2){
return mon.size();
}
else {
return nums.length/2;
}
return 0;
}
}
- HashMap 사용했고 put할 때 value는 이용되지 않을 거니까 그냥 1 해줬다
- 어쨌든 폰켓몬 종류 수와 nums/2 둘 중에 작은 거 리턴하는 거니까 굳이 if 저렇게 안 쓰고 삼항연산자 쓰는 것도 좋을 것 같은데 왜 코드 쓸 때는 죽어도 생각이 안 날까...
- HashSet 사용한 풀이도 있길래 HashMap이랑 차이점 찾아보니까
HashMap은 key와 value 저장, HashSet은 객체 그 자체만 저장한다고 한다
HashMap은 key-value 쌍으로 관리해서 key는 중복이 안 되고, value는 중복 가능하고 덮어쓸 수 있는 반면
HashSet은 value만 존재하고, 중복이 허용되지 않는다 그래서 중복을 제거할 때 용이하다고 한다
근데 set도 map을 기반으로 하기 때문에 사실은 key값에 객체를 넣고 value에는 더미데이터를 넣어 사실은 key가 중복이 되지 않는 고유한 특성을 이용한 것이라고 하네...
쓰다보니까 해시탈트 붕괴 와서 좀 더 공부를 해봐야겠다 문제 좀 꾸준히 풀게 채찍질하려고 다시 올리는 블로그...
'▪️알고리즘' 카테고리의 다른 글
| [프로그래머스] 인기 있는 아이스크림 - SQL 고득점 Kit (0) | 2026.07.07 |
|---|