본문 바로가기
Programmers

완주하지 못한 선수 (HashMap)

by heounto 2026. 3. 18.

완주하지 못한 선수 문제 난이도가 굉장히 이지 하다고 한다

 

일단 예제부터 살펴보면 각각 이름과 값이 필요하다

동명이인을 비교하기위한 이름값 String과 완주 요소인 Integer를 통하여 완주 못한 선수의 이름을 return 해야되는데

 

각각의 값을 비교하기 위해 HashMap => 중복처리 + 카운팅 요소가 필요하기에 사용해야된다.

 

일단 처음은

 HashMap<String,Integer> map = new HashMap<>(); //이름과, 완주요소 0부터시작

해당 해시맵을 생성하고 비교를 위해 for 문을 돌리도록한다.

 

 public String solution(String[] participant, String[] completion)

해당 코드에 이미 participant 참가자 이름, completion 완주 요소를 줬으니까 해당 변수로 for문을 돌린다.

 

        for(String name : participant){
            map.put(name, map.getOrDefault(name,0)+1);
        }

일단 이름부터 동명이인을 체크해야되기 때문에 put을 통하여 값을 넣는다 getOrDefault를 통해 첫 값은 0이지만 해당 이름이 나올때마다 +1 을해준다

예시로 lee 가 4명이면 lee 0 =>  lee 1 => lee 2 => lee 3 => lee 4 로 동명이인을 포함해 총 몇명의 lee가 있는지 알 수 있다.

 

        for(String name : completion){
            map.put(name, map.getOrDefault(name,0)-1);
        }

그 다음 값은 이제 해당 이름에서 completion 완주에 성공한 사람을 제외해야지 완주를 못한 return값을 알 수 있다.

해당 값을 -1 형식으로 빼주며 최종적으로 0이되는 값이 있을 수도 있고 아직 양수인 경우도 존재한다.

 

for(String name : map.keySet()){
            if (map.get(name) >= 1){
                answer = name;
            }

자 이제 해당 값들 => (동명이인 합치기 + 완주자 빼기) 를 통하여 나온 값들 중 1 이상이면 해당 이름을 반환하면 완주못한 이의 이름을 알 수 있다. 애초에 결과값이 완주를 못한 사람의 이름만 필요하기 때문

해당 값을 통해 ex) lee 3, yee 2 같이 완주를 못한 Integer 값의 인원을 색출해 String 이름 값을 뽑아내어 값을 확인한다

 

import java.util.HashMap;

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

최종 코드

 

참고로 나는 import를 까먹어서 어 왜 안되지 하면서 얼탔는데 무조건 기본 내장 클래스가 아닌 것을 사용할 때는 반드시 import를 생각해보자. 얏호