수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
🕐 풀이 시간 : 30분
처음에는 list를 만들고 remove시킬려고 했는데 너무 쉽게 풀린다 싶어서 다시 확인하니 동일 이름이 존재할 수 있다는 부분이 있어 다 지우고 다시 풀었다..문제를 좀 똑바로 읽자.
핵심은 맵이고 맵을 제대로 다룰 수 없어서 좀 오래 걸렸다. 문제 자체는 크게는 어렵지 않았다.
해시맵 생성
해시맵에 값 존재 여부에 따른 로직처리
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
//해쉬맵 생성
HashMap<String,Integer> map = new HashMap<>();
for(int i = 0 ; i < participant.length; i++){
//map에 키가 존재할 때
if(map.containsKey(participant[i])){
map.put(participant[i], map.get(participant[i]) + 1);
}
//map에 값이 없을 때는 생성!
else if(!map.containsKey(participant[i])){
map.put(participant[i], 1);
}
}
//완주자 배열을 돌려 해쉬맵에 값을 줄이자!
for(int i = 0 ; i < completion.length; i++){
if(map.containsKey(completion[i])){
map.put(completion[i] , map.get(completion[i])-1);
}
}
//남아있는 참여자 배열을 찾자!
for (String key: map.keySet()){
if(map.get(key) > 0)
answer += key;
}
return answer;
}
}