본문 바로가기

코딩테스트

프로그래머스 해시 포켓몬

https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

package AlgorithsmExample;

import java.util.HashMap;

// https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java
public class PocketMone {
    public static void main(String[] args) {
        PocketMone pocketMone = new PocketMone();
        int nums [] = {3,1,2,3};
        int nums2 [] = {3,3,3,2,2,4};
        int nums3 [] = {3,3,3,2,2,2};

        pocketMone.solution(nums);
    }

    public int solution(int[] nums) {
        int answer = 0;
        HashMap<Integer, Integer> sort = new HashMap<Integer, Integer>();

        for (int num : nums) {
            sort.put(num, sort.getOrDefault(num, 0) + 1);
        }

        if(sort.size() >= nums.length/2){
            answer = nums.length/2;
        } else{
            answer = sort.size();
        }
        return answer;
    }
}

 

후기 ... 

문제를 풀고 생각해보니까 어떤 문제든지 배열안에서 중복되는 값을 일단 솎아내고 시작하는게 기본이다.

해시를 활용하지 않고 배열안의 값이 중복되는지 확인하려면 반복문을 답도없이 돌려야 하는데 덕분에 고민해도 되지 않게 됐다. 너무 고마운 자료구조인듯 ㅇㅇ