Source Code : https://github.com/JangAJang/Algorithm/blob/main/프로그래머스_Lv1/완주하지%20못한%20선수/src/Solution.java
생각보다 문제의 수준 자체는 높지 않았던 것 같다. 해시맵으로 도착한 사람의 value를 +1, 도착 명단에 없는 경우 -1을 해주면 되었다.
private HashMap<String, Integer> includeParticipant(String[] par){
HashMap<String, Integer> map = new HashMap<>();
for(String s : par){
includePersonToMap(s, map);
}
return map;
}
private void includePersonToMap(String s, HashMap<String, Integer> map){
int count = 0;
if(map.containsKey(s)){
count = map.get(s);
map.remove(s);
}
map.put(s, count+1);
}
같은 이름의 사람이 있으므로, 참여자들을 Map에 넣을 때, 원래 없었으면 count(=0)+1,
같은 이름의 사람이 있다면 count(=map.get()) + 1로 새롭게 넣어준다.
이후, 도착자 명단에서 이름을 key로 받아 그 value를 -1해주면 된다.
private void excludeCompletion(String[] com, HashMap<String, Integer> map){
for(String s : com){
map.replace(s, map.get(s), map.get(s)-1);
}
}
이후 value가 0이 아닌 이름들을 리턴해주면 된다.
난이도가 높아질 수록, 기본적인 array, list에서 set, hashmap으로 쓰기 좋은 자료형이 바뀌고 있다.
후엔 람다식, 스트림도 배워서 써먹을 수 있으면 좋겠다.
맨날 외부 코드를 참조해서 스트림, 람다를 쓰는게 아니라, 직접 머리속에서 생각해서 쓸 수 있으면 좋겠다.
'개발공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] PCCP 2번. 석유시추 (2) | 2024.03.06 |
---|---|
[프로그래머스] lv.2 전력망을 둘로 나누기 (0) | 2023.02.10 |
[프로그래머스] 코딩테스트 Lv.1 신규 아이디 추천 (0) | 2022.10.28 |
[프로그래머스] 코딩테스트 Lv.1 키패드 누르기 (0) | 2022.10.25 |
[프로그래머스] 코딩테스트 Lv.1 완주하지 못한 선수 (0) | 2022.10.21 |