본문 바로가기

Algorithm/Programmers

[프로그래머스_JAVA_알고리즘] 완주하지 못한 선수 #해시

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> hashmap = new HashMap<>();
        
        for(String player : participant) 
            hashmap.put(player, hashmap.getOrDefault(player, 0) +1);
        for(String player : completion)
            hashmap.put(player, hashmap.get(player) -1);
        
        for(String key : hashmap.keySet()) {
            if(hashmap.get(key) != 0){
                answer = key;
                break;
            }            
        }                     
        return answer;
    }
}

 

참가자의 이름을 key, 참가자의 등장 횟수를 value로 저장합니다.
getOrDefault(player, 0) +1은 player라는 이름이 맵에 있으면 값을 가져오고, 없으면 0을 반환합니다. 그리고 등장 횟수를 1 증가합니다.

hashmap.get(player) -1은 완주한 사람의 등장 횟수를 가져와 -1을 합니다.
즉, 완주한 사람은 value가 0이 되고 완주하지 못한 사람은 1이 됩니다.


따라서 hashmap.get(key) != 0인 경우, 완주하지 못한 사람의 이름인 key 값을 반환합니다.

 

.

.

.

 

문제는 아래에서 확인할 수 있습니다.

https://school.programmers.co.kr/learn/courses/30/lessons/42576

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr