Problem

마라톤에 참여한 선수들의 명단과 완주한 선수들의 명단이 주어졌을 때

 

완주하지 못한 선수의 이름을 구하는 문제입니다.

 

단, 동명이인이 존재할 수 있습니다.

 

 

Solution

HashMap 을 사용하면 됩니다.

 

{ "이름": "인원수" } 의 key-value 형식을 갖게 선언해서 완주한 사람들을 전부 넣습니다.

 

그리고 participant 를 순회하면서 key 값이 존재하면 인원수를 하나씩 빼줍니다.

 

만약 인원수가 음수가 된다면 그 사람이 완주하지 못한 선수입니다.

 

 

Java Code

import java.util.*;

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

 

+ Recent posts