[JAVA] 프로그래머스 Lv1. 완주하지 못한 선수 - 다른 풀이(HashMap)

2020. 10. 11. 19:21
728x90

HashMap은 Map인터페이스를 구현한 Map 컬렉션으로 많은 양의 데이터를 검색하는데 뛰어난 성능을 가진다.

Map은 key와 value로 구성된 Entry객체를 저장하는 구조.

key와 value는 객체이고, value는 중복될 수 있지만 key는 중복 될 수 없다.

 

<HashMap을 이용한 풀이>

 

import java.util.HashMap;

import java.util.Map;

 

class Solution {

    public String solution(String[] participant, String[] completion) {
        String answer="";

 

         // HashMap 선언 HashMap<KEY , VALUE> name = new HashMap<>();
        HashMap<String, Integer> hm = new HashMap<>();   

        

        // getOrDefault(Object key, default Value) => 찾는 키가 존재한다면 찾는 키의 값을 반환, 없다면 기본값을 반환

        for(String player : participant) hm.put(player, hm.getOrDefault(player,0)+1);

        => HashMap hm의 모든 value는 1

 

        for(String player : completion) hm.put(player, hm.get(player)-1);

        => completion의 key값을 가져와 value에 -1을 해준다.

        => participant와 completion에 공통으로 가지고있는 key 값의 value는 0이 됨.

        => 따라서 participant에만 있는 key의 value는 1.

 

 

        // Map의 값을 출력하기 위해 entrySet() / keySet() 사용.

        // entrySet() : key와 value 값이 모두 필요한 경우

        // keySet() : key만 필요한 경우

 

        ====  keySet()을 사용한 경우

        for(String key : hm.keySet()) {

            if(hm.get(key) != 0) {

                answer = key;

            }

        }

 

        ====  entrySet()을 사용한 경우

         for(Map.Entry<String, Integer> entry : hm.entrySet()) {

            if(entry.getValue() != 0) {

                answer = entry.getKey();

            }

        }

 

 

        return answer;

    }

728x90

BELATED ARTICLES

more