728x90
📍 생각 포인트.
- Hash 의 특징을 활용해야함.
- Hash 는 동일 Key가 있으면, 그 Key 를 덮어쓰기 한다는 점.
- map.getOrDefault(가져올 키, 디폴트 값)
- map.put( key, map.getOrDefault(key, 0) + 1 )
- map 에 이미 key 가 있다면? --> 그 key 의 value 를 가져와서 +1 한다.
- map 에 key 가 없다면? --> map.put(key, 0+1) 을 하겠다.
import java.util.*;
class Solution {
private String rtnKey = "";
public String solution(String[] participant, String[] completion) {
String answer = "";
/* 1차 시도 :: 효율성 탈락!!
ArrayList<String> pList = new ArrayList<>(Arrays.asList(participant));
ArrayList<String> cList = new ArrayList<>(Arrays.asList(completion));
HashMap<String, Integer> pHashMap = new HashMap<>();
HashMap<String, Integer> cHashMap = new HashMap<>();
for(String p : participant){
pHashMap.put(p, Collections.frequency(pList, p) );
}
for(String c : completion){
cHashMap.put(c, Collections.frequency(cList, c) );
}
pHashMap.forEach((key, value) -> {
if(cHashMap.get(key) == null || cHashMap.get(key) != value){
rtnKey = key;
}
});
answer = rtnKey;
*/
HashMap<String, Integer> map = new HashMap<>();
for (String player : participant){
//getOrDefualt : player의 값을 가진 key를 가져와서 없으면 0을 가져와서 1을 더하고, 있으면 그 값을 가져와서 1을 더한다.
map.put(player, map.getOrDefault(player, 0) + 1);
}
//System.out.println(map);
//Hash map에서 완주한 사람 빼기
for (String player : completion){
//기존의 있던 값을 가져와서 -1 한다
map.put(player, map.get(player) - 1);
}
/*for(string key : map.keySet()){
if(map.get(key) != 0){
answer = key;
break;
}*/
//위의 코드 대신 아래 코드도 사용가능. EntrySet이 반복문을 사용할때 속도가 더 빠름.
Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<String, Integer> entry = iter.next();
if (entry.getValue() != 0){
answer = entry.getKey();
break;
}
}
return answer;
}
}
출처 :
https://onlyfor-me-blog.tistory.com/319
개발 공부를 위한 블로그 입니다.
오류가 있다면 댓글로 알려주세요!
감사합니다.

728x90
'JAVA > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문제별 생각 포인트 (계속 추가됨.) (1) | 2024.10.04 |
---|---|
[프로그래머스] 스택/큐 - 기능개발 (1) | 2024.09.30 |
[프로그래머스] 정렬 - K번째수 (1) | 2024.09.06 |
[프로그래머스] Hash - 전화번호 목록 (0) | 2024.09.04 |
[프로그래머스] Lv 1. 평균구하기 (2) | 2022.10.15 |