문제
https://programmers.co.kr/learn/courses/30/lessons/42576
내 코드
public String solution(String[] participant, String[] completion) {
//1
Map<String, Integer> completionMap = new HashMap<String, Integer>();
//2
for(String s : completion)
completionMap.put(s, completionMap.getOrDefault(s, 0)+1);
//3
for(int i=0; i<participant.length; i++) {
if(!completionMap.containsKey(participant[i]))
return participant[i];
else {
completionMap.put(participant[i], completionMap.get(participant[i])-1);
}
}
//4
for(String key : completionMap.keySet())
if(!(completionMap.get(key) == 0)) return key;
return "";
}
문제풀이
- 완주자 데이터를 담을 HashMap completionMap 선언
- for 문을 돌면서 파라미터 completion을 HashMap에 담는다.(key: 선수 이름, value: 해당이름을 갖는 선수 count)
- 참가자 파라미터 participant를 for문을 돌면서 완주자 completionMap에 포함되어 있는지 판별 한다.
3-1. 포함되어 있지 않으면 완주를 못한 선수! 바로 return 한다.
3-2. 포함되어 있으면 completionMap에 해당 value 값을 1 감소 시킨다.
- 3-2에서 완주한 선수는 1씩 감소 시켰으니, for 문을 돌면서 completionMap의 value값이 0이 아닌 선수를 return 한다.