프로그래머스 유형별 문제 중 해시에 해당하는 문제이다.
이번 게시글을 통해 Java에서 HashMap의 사용법도 같이 포스팅하려고 한다!
이 문제를 보면 HashMap에 대한 사용법을 많이 익힐 수 있어서 아주 좋다~
우선 문제 답안 코드를 먼저 보자
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
// 참가자 카운팅
for(String startPlayer : participant){
hashMap.put(startPlayer,hashMap.getOrDefault(startPlayer, 0)+1);
}
// 완주자 카운팅
for(String endPlayer : completion){
hashMap.put(endPlayer,hashMap.get(endPlayer)-1);
}
// 완주 못한 사람 찾기
for(Map.Entry<String, Integer> entry : hashMap.entrySet()){
if(entry.getValue() != 0){
answer = entry.getKey();
break;
}
}
return answer;
}
}
문제 풀이를 간단히 해보자면
participant(참가자)를 HashMap에 저장한다.
이때, 동명이인이 있으므로 단순히 있다 없다가 아니라 카운팅을 통해 처리를 해주자.
그리고 completion(완주자)를 체크할 때 1씩 카운트를 빼줄 것이다.
이때 count가 0이 아니라면! 완주를 못한것이므로 알 수 있다.
완주자 카운팅이 끝나고 나면 HashMap에서 count가 0이 아닌 사람을 찾고 출력해준다!
이제 아래에서 HashMap의 사용법에 대해서 알아보자!
import java.util.HashMap;
// HashMap 객체 선언 <Key Type, Value Type>
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
String Key = "key";
int value = 0;
// Value 저장
hashMap.put(key,value);
// Key 불러오기
int getValue = hashMap.get(key);
// Key 불러오기, Key가 존재하지 않으면 기본값 return
int getValue = hashMap.getOrDefault("unexistKey",100);
// Value 바꾸기
int beforeValue = hashMap.value(key,1);
// Key 존재여부 확인
boolean flag = hashMap.containsKey(key);
// Key 삭제
hashMap.remove(key);
// Key Set, Key들의 집합
Set set = hashMap.keySet();
// for문으로 set 검사
for(String key : set){
String value = hashMap.get(key);
}
// iterator로 검사
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
String newKey = iterator.next();
String newValue = hashMap.get(newKey);
}
// EntrySet, <Key,value>의 집합
Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();
// for문으로 entry set 검사
for(Map.Entry<String, Integer> entry : entrySet){
String key = entry.getKey();
int value = entry.getValue();
}
// iterator로 검사
Iterator<String> iterator = entrySet.iterator();
while(iterator.hasNext()){
Map.Entry<String, Integer> entry = (Map.Entry<String,Integer>)iterator.next();
String key = entry.getKey();
int value = entry.getValue();
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 스택/큐 : 기능개발 Kotlin (0) | 2020.09.07 |
---|---|
[프로그래머스] 스택/큐 : 주식가격 Java (0) | 2020.09.07 |
[프로그래머스] 해시 : 베스트앨범 Kotlin (0) | 2020.09.05 |
[프로그래머스] 해시 : 위장 Java (0) | 2020.09.05 |
[프로그래머스] 해시 : 전화번호 목록 Java (0) | 2020.08.30 |
댓글