Dev/Programmers

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

마이캣호두 2024. 12. 19. 14:08
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

Idea

map.getOrDefault(p, 0) + 1 에서 key에 대한 vaule를 1 증가시켜주고, completion 배열에서 key를 찾으면 -1 해준다. 마지막에 value가 0이 아닌 key를 찾아내면 그게 답!

 

 

Review

map.getOrDefault(K key, V defaultValue) 는 특정 키에 대응하는 값을 반환하는 메서드입니다. 이 메서드는 주어진 키에 대한 값이 없을 경우, 지정한 기본값을 반환합니다. 이 메서드를 사용하면, 키가 없는 경우에도 기본값을 안전하게 반환할 수 있습니다. 즉, map.getKey()를 사용했을 때 null을 반환받는 것을 방지할 수 있습니다.

 

HashMap에서 동일한 키에 대해 값은 하나만 존재하므로, 같은 키를 여러 번 추가할 수 없습니다. 따라서, 후속 삽입이 이루어지면 기존의 K-V 쌍에 해당하는 값이 덮어쓰여지게 됩니다. 

 

putIfAbsent() 는 특정 키가 없는 경우에만 값을 삽입하고, 키가 이미 존재하면 아무 작업도 하지 않습니다.

 

 

Code

import java.util.HashMap;

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