- 오늘의 학습 키워드 : HashMap
1. HashMap : 데이터 저장할 때 key와 value가 짝을 이루어 저장, 데이터를 저장할 때 Key값으로 해시함수 실행한 결과를 통해 저장위치 결정.
2. HashMap은 특정 데이터의 저장위치를 해시함수를 통해서 바로 알 수 있고 데이터 추가, 삭제, 검색이 빠름
3. HashMap은 Key 값을 통해서만 검색이 가능, HashMap의 Key값은 중복될 수 없고, Value 값은 Key 값이 다르다면 중복이 가능.
HashMap 메서드
데이터 저장
1. V put(K key, V value) : key와 value를 저장.
2. void putAll(Map<? extends K ? extends V> m) : Map m의 데이터를 전부 저장
3. V putIfAbsent(K key, V value) : 기존 데이터에 key가 없으면 key와 value를 저장.
데이터 삭제
1. void clear() : 모든 데이터를 삭제
2. V remove(Object key) : key와 일치하는 기존 데이터(key와 value)를 삭제
3. boolean remove(Object key, Object value) : key와 value가 동시에 일치하는 데이터를 삭제
데이터 수정
1. V replace(K key, V value) : key와 일치하는 기존 데이터의 value를 변경.
2. V replace(K key, V oldValue, V newValue) : key와 oldValue가 동시에 일치하는 데이터의 value를 newValue로 변경
데이터 변환
1. V get(Object key) : key와 맵핑된 value값을 반환
2. V getOrDefault(Object key, V defaultValue) : key와 맵핑된 value값을 반환하고 없으면 defaultValue값을 반환합니다.
3. Set<Map.Entry<K, V>> entrySet( ) : 모든 key-value 맵핑 데이터를 가진 Set 데이터를 반환합니다.
4. Set<K> keySet( ) : 모든 key 값을 가진 Set 데이터를 반환합니다.
5. Collectio <V> values() : 모든 value값을 가진 Collection 데이터를 반환
- 해시를 이용한 문제풀이
- key는 완주한 선수의 이름을 value는 해당 선수의 이름을 카운트하는 Hash를 생성한다.
- 참가자와 완주한 선수의 Hash를 통해 완주하지 못한 1명을 찾는다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String p : participant) {
hm.put(p, hm.getOrDefault(p, 0) + 1);
}
for (String c : completion) {
hm.put(c, hm.get(c) - 1);
}
for (String key : hm.keySet()) {
if (hm.get(key) != 0){
answer = key;
}
}
return answer;
}
}
- 배열을 이용한 문제풀이
- 하나의 루프를 돌면서 Completion 배열을 기준으로 잡고 처음부터 끝까지 돌면서 비교
- 양쪽 배열을 다 정렬해서 같은 index의 값이 다르다면, Participant[index] 값이 정답.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
int i;
for (i = 0; i < completion.length; i++) {
if (!participant[i].equals(completion[i])){
return participant[i];
}
}
return participant[i];
}
}
'항해 플러스' 카테고리의 다른 글
백엔드 4기 WIL 제출 (0) | 2024.05.18 |
---|---|
[백엔드 4기] 9주차 팀별 회고 노트 (0) | 2024.05.11 |
[백엔드 4기] 8주차 팀별 회고 노트 (0) | 2024.05.04 |
[백엔드 4기] 7주차 팀별 회고 노트 (1) | 2024.04.27 |
[백엔드 4기] 6주차 팀별 회고 노트 (1) | 2024.04.20 |