공부하는 스누피
[JAVA] 완주하지 못한 선수 - HashMap 본문
https://programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수��
programmers.co.kr
https://snoop-study.tistory.com/2
[JAVA] 완주하지 못한 선수 - ArrayList
https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주.
snoop-study.tistory.com
저번에는 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
[JAVA] HashMap 사용법 정리
1. 선언 import java.util.HashMap; HashMap map = new HashMap (); 2. 삽입, 삭제 map.put(key, value); map.remove(key); 3. 출력 - 하나만 map.get(key); - 모두(키값만) Set keys = map.keySet(); for(Key dat..
snoop-study.tistory.com
'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 |