프로그래머스의 '완주하지 못한 선수' 문제를 풀면서 해시맵에 대한 문법을 너무나 모른다는 생각이 들어 정리했다.
파이썬에서는 그냥 딕셔너리를 이용해서 문제를 풀어왔기에..상대적으로 해쉬맵을 생성하고 다루는데 조금 어려움을 겪었다.
#해시맵
import java.util.*;
HashMap<String,Integer> map = new HashMap<>();
#리스트
List<Integer> list = new ArrayList<>()
와 비슷하게 보였지만 역시나 해시맵이기 때문에 <키, 값> 의 자료형을 정의해주어야한다.
HashMap<String,Integer> map = new HashMap<>();
for(int i = 0 ; i < participant.length; i++){
//map에 키가 존재할 때
if(map.containsKey(participant[i])){
map.put(participant[i], map.get(participant[i]) + 1);
}
//map에 값이 없을 때는 생성!
else if(!map.containsKey(participant[i])){
map.put(participant[i], 1);
}
}
완주하지 못한 선수의 코드를 가져왔다.
만약에 값을 받아서 해시맵을 만드는데 이미 존재하는 여부를 따지면서 만들어야 한다면 containskey를 사용해서 키로 인한 값이 만들어져있는지 확인하고 put을 통해서 값을 넣어주면된다
for (String key : map.keySet()) {
System.out.println(key);
}
for (String key : map.values()) {
System.out.println(key);
}
for (String key: map.keySet()){
if(map.get(key) > 0)
answer += key;
}
이런 식으로 키를 꺼내와서 키 값을 통해서 value의 값을 확인하는 것도 할 수 있다!
Set, EntrySet을 사용하는 방법도 있는 듯하다.
기본적인 해시맵을 사용하면서 숙지가 완벽하면 학습하도록 해야겠다.