String answer = "";
HashMap<String, Integer> map = new HashMap<>();
for (String p : participant) {
if(map.containsKey(p)){
map.put(p, map.get(p) + 1);
} else {
map.put(p, map.getOrDefault(p, 1));
}
}
for (String c : completion) {
map.put(c, map.get(c) - 1);
}
for(String m : map.keySet()){
if(map.get(m) == 1){
answer = m;
}
}
return answer;
완주자 명단에서 참가자 명단을 빼면 되는데
내장 메소드를 이용하면 대게 중복이 제외된다.
참가자 명단에 있으면 +1을 해주고 완주자 명단에 있으면 -1를 해서 0이 아닌 사람을 반환했다.
중복된 코드 제거하기
for (String p : participant) {
if(map.containsKey(p)){
map.put(p, map.get(p) + 1);
} else {
map.put(p, map.getOrDefault(p, 1));
}
}
for (String p : participant) {
map.put(p, map.getOrDefault(p, 0) + 1);
}
위,아래는 똑같이 실행되는 코드다.. getOrDefault를 쓰면 값이 없을때 0을 넣어주니까
굳이 containsKey로 거르지 않아도 된다
(이모씨의 도움을 받았다)