Algorithm

[Algorithm] 프로그래머스_완주하지 못한 선수(JAVA)

dev_ajrqkq 2024. 12. 13. 15:05

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

 

프로그래머스

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

programmers.co.kr


hashMap을 사용하여 participant 배열의 선수들을 key값으로 넣고 value에 해당 선수가 몇명인지 넣는다. 

그 후 completion배열의 선수들에 대해 value값을 -1 해준다. 

결과적으로 value값이 0이 아닌 선수를 return해준다.

 

hashMap의 getOrDefault메서드를 사용하여 코드의 가독성을 높일 수 있다.

 

getOrDefault(key, defaultValue) => key가 존재하면 기존 value값을, 존재하지않으면 defaultValue값을 반환해준다.

 

풀이는 아래와 같다.

import java.util.*;
class Solution {
    public String solution(String[] participant, String[] completion) {
        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){
                return key;
            }
        }
        return "";
    }
}