[JAVA] 프로그래머스 Lv1. 완주하지 못한 선수 - 다른 풀이(HashMap)
HashMap은 Map인터페이스를 구현한 Map 컬렉션으로 많은 양의 데이터를 검색하는데 뛰어난 성능을 가진다.
Map은 key와 value로 구성된 Entry객체를 저장하는 구조.
key와 value는 객체이고, value는 중복될 수 있지만 key는 중복 될 수 없다.
<HashMap을 이용한 풀이>
import java.util.HashMap;
import java.util.Map;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer="";
// HashMap 선언 HashMap<KEY , VALUE> name = new HashMap<>();
HashMap<String, Integer> hm = new HashMap<>();
// getOrDefault(Object key, default Value) => 찾는 키가 존재한다면 찾는 키의 값을 반환, 없다면 기본값을 반환
for(String player : participant) hm.put(player, hm.getOrDefault(player,0)+1);
=> HashMap hm의 모든 value는 1
for(String player : completion) hm.put(player, hm.get(player)-1);
=> completion의 key값을 가져와 value에 -1을 해준다.
=> participant와 completion에 공통으로 가지고있는 key 값의 value는 0이 됨.
=> 따라서 participant에만 있는 key의 value는 1.
// Map의 값을 출력하기 위해 entrySet() / keySet() 사용.
// entrySet() : key와 value 값이 모두 필요한 경우
// keySet() : key만 필요한 경우
==== keySet()을 사용한 경우
for(String key : hm.keySet()) {
if(hm.get(key) != 0) {
answer = key;
}
}
==== entrySet()을 사용한 경우
for(Map.Entry<String, Integer> entry : hm.entrySet()) {
if(entry.getValue() != 0) {
answer = entry.getKey();
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 Lv1. k번째수 -다른풀이 (0) | 2020.10.13 |
---|---|
[JAVA] 프로그래머스 Lv1. k번째수 (0) | 2020.10.13 |
[JAVA] 프로그래머스 Lv1. 가운데 글자 가져오기 - 다른 풀이 (0) | 2020.10.11 |
[JAVA] 프로그래머스 Lv1. 가운데 글자 가져오기 (0) | 2020.10.11 |
[JAVA] 프로그래머스 Lv1. 완주하지 못한 선수 (0) | 2020.10.09 |