알고리즘
Programmers - 완주하지 못한 선수(Java)
장중앙
2021. 11. 2. 17:45
https://programmers.co.kr/learn/courses/30/lessons/42576?language=java
풀이
Map을 이용하여 풀이
1. Participant를 탐색하면서 map에 이름이 있으면 map[key]+=1로 수정,
없으면 map[key]=1로 할당
2. completion을 탐색하면서 해당 이름을 key로 가지고 있는 map의 value를 -1, value가 0이면 map에서 key삭제
3. map을 탐색(2번이 정상적으로 구현되었다면 한개의 key만 남아있음) 남아있는 key의 값을 return
* List로 먼저 풀어봤지만 시간 초과 -> Map은 탐색에서 성능이 우수하기 때문에
* Java를 사용해본적이 없어 함수의 유무나 사용방법에 어려움이 있음
ex) map에 하나의 key만 남아있는 상황이지만, 다른 방법이 생각나지 않아 for문을 이용하여 key를 확인
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> map = new HashMap<>();
for(String name:participant){
if(map.containsKey(name))
map.put(name, map.get(name)+1);
else
map.put(name, 1);
}
for(String name:completion){
if(map.containsKey(name))
map.put(name, map.get(name)-1);
}
for(String key: map.keySet()){
if(map.get(key)>0){
answer=key;
break;
}
}
return answer;
}
}