https://school.programmers.co.kr/learn/courses/30/lessons/42576
맵을 사용하여 key에 사람이름 , value에 수를 넣는다.
participant의 모든 이름을 key로 넣고 value에 +1해주고 completion의 모든 이름을 뺀다. value -1한다.
value가 0이 아닌사람이 낙오자다.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
HashMap<String, Integer> player = new HashMap<>();
StringBuilder sb = new StringBuilder();
for(String all : participant){
int tmp = player.getOrDefault(all,0) + 1;
player.put(all, tmp);
}
for(String win : completion){
int tmp = player.getOrDefault(win,0) - 1;
player.put(win, tmp);
}
player.forEach((key,value) -> {
if(value == 1){
sb.append(key);
}
});
return sb.toString();
}
}
map에서 forEach문을 람다식으로 처음 써봤다. 괜찮은것 같다.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
HashMap<String, Integer> player = new HashMap<>();
String answer = "";
for(String all : participant){
int tmp = player.getOrDefault(all,0) + 1;
player.put(all, tmp);
}
for(String win : completion){
int tmp = player.getOrDefault(win,0) - 1;
player.put(win, tmp);
}
for(String key : player.keySet()) {
if(player.get(key) != 0){
answer = key;
}
}
return answer;
}
}
밑에 keySet과 get을 사용하는 부분을 참고해서 써봤다. 테스트 5빼곤 훨씬 빠르다.