https://programmers.co.kr/learn/courses/30/lessons/42576
이 문제를 다시 풀어봤는데 난 여전히 sort를 사용해 풀었고, 더 좋은 알고리즘을이 있을 것 같아 여러개 찾아봄
찾아 보다 좋은 풀이가 있어서 해당 풀이로 문제를 풀어보고자 함
=> 참고로 sort 사용해서 풀었을 때 보다 훨씬 빠름
- getOrDefault
getOrDefault(Object key, V DefaultValue) : 찾는 키가 존재하면 찾는 키의 값을 반환하고 아니면 default값 반환
1) hashmap 에 participant 의 선수들을 key로 설정해 +1 씩 증가시켜 넣어줌
-> 동명이인이 있을 수 있기 때문에 중복 처리를 해줘야함
-> 이때 getOrDefault 를 사용해 count가 1씩 증가 될 수 있도록 해줌
hm.put(player, hm.getOrDefault(player,0)+1);
=> 해당 플레이어가 없으면 0 으로 설정, 있으면 해당 값을 반환해 1증가
2) completion에 있는 선수들을 찾아 -1 씩 해줌
3) hashmap에 있는 키들중 값이 0 이 아닌 것을 찾아 반환
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for(String player : participant){
hm.put(player, hm.getOrDefault(player,0)+1);
}
for(String player : completion ){
hm.put(player, hm.get(player) -1 );
}
for(String key : hm.keySet()){
if(hm.get(key)!=0){
answer = key;
break;
}
}
return answer;
}
}
'코테 준비-문제풀기' 카테고리의 다른 글
해쉬- 학급회장/ 애너그램/ 매출액의 종류 * (0) | 2022.04.05 |
---|---|
프로그래머스 - 전화번호 목록 (자바/java) (0) | 2022.02.23 |
프로그래머스 완주하지 못한 선수 - java ver (0) | 2021.08.29 |
프로그래머스 - 그리디/ 큰 수 만들기/ 자바 /java (0) | 2020.12.01 |
프로그래머스 - dp / 등굣길 / 자바 java (0) | 2020.11.18 |