공부하는 스누피
[JAVA] 완주하지 못한 선수 - HashMap 본문
https://programmers.co.kr/learn/courses/30/lessons/42576
https://snoop-study.tistory.com/2
저번에는 ArrayList로 풀어서 시간 초과로 실패해버렸는데 이번에는 hash로 풀어보았습니다.
덕분에 HashMap을 실전에서는 처음 써본 것 같네요ㅎㅎ ArrayList보다 훨씬 쉬웠습니다.
시간복잡도는 O(N)입니다.
구현
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
//HashMap 선언
HashMap <String, Integer> map = new HashMap <String, Integer>();
//완주자 저장
for(int i=0;i<completion.length;i++){
if(!map.containsKey(completion[i]))
map.put(completion[i], 1);
else
map.put(completion[i], map.get(completion[i])+1); //hash 업데이트
}
for(int i=0;i<participant.length;i++){
//이름이 key값에 존재하지 않음 -> 완주 못함 1
if(!map.containsKey(participant[i])){
answer = participant[i];
break;
}
else{
int num = map.get(participant[i]);
if(num == 0){
//이름이 key값에 존재하지만 카운트 0 -> 완주 못함 2
answer = participant[i];
break;
}
//체크한 참가자는 제거
map.put(participant[i], map.get(participant[i])-1);
}
}
return answer;
}
}
참고
https://snoop-study.tistory.com/4
'Algorithms > 코딩테스트 문제풀이' 카테고리의 다른 글
[JAVA] 뉴스 클러스터링 - HashMap (1) | 2020.07.15 |
---|---|
[JAVA] 크레인 인형뽑기 - Stack (0) | 2020.07.13 |
[JAVA] K번째수 - Arrays (0) | 2020.07.12 |
[JAVA] 모의고사 - DFS (0) | 2020.07.11 |
[JAVA] 완주하지 못한 선수 - ArrayList (0) | 2020.07.07 |
Comments