포켓몬

Heeeoh·2023년 2월 17일
0

프로그래머스

목록 보기
7/26
post-thumbnail

🔍문제 분석

✔️ 출처

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. 해당 문제에서 로직을 짤때 어떤것이 필요한 지를 다시한번 체크하고 풀 필요가 있다.
  2. 사람이라 1번을 자꾸 까먹는다. 반복 숙달이 답이다.
profile
열심히 살자

0개의 댓글