programmers/Lv 1
프로그래머스Lv 1 포켓몬
Meluu_
2024. 6. 26. 14:49

🔍문제 분석
✔️ 출처
https://school.programmers.co.kr/learn/courses/30/lessons/1845
📖 문제

해시 문제
🔅 문제풀이
공책에 적다가 맵을 쓰면 될꺼같다 싶어서 맵을 썼다.
import java.util.HashMap;
class Solution {
public int solution(int[] nums) {
HashMap<Integer,Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
int value = (map.getOrDefault(nums[i],0)) + 1;
map.put(nums[i],value);
}
return Math.min(map.size(), (nums.length/2));
}
}

여기까지 풀고 다른 사람 풀이 보니 set을 썼었다. 근데 생각해보니 size()만 쓸꺼면 굳이 맵을 쓸 필요가 없는데 이걸 생각못했다..
🔅 다른 사람 풀이
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
HashSet<Integer> hs = new HashSet<>();
for(int i =0; i<nums.length;i++) {
hs.add(nums[i]);
}
if(hs.size()>nums.length/2)
return nums.length/2;
return hs.size();
}
}
테스트 결과보면 어떤건 내 코드가 빠르고 어떤건 이게 빠르다.
❗ 오답노트 / 필요한 지식
- 해당 문제에서 로직을 짤때 어떤것이 필요한 지를 다시한번 체크하고 풀 필요가 있다.
- 사람이라 1번을 자꾸 까먹는다. 반복 숙달이 답이다.