수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
입출력 예제
participant | completion | return |
["leo", "kiki", "eden"] | ["eden", "kiki"] | "leo" |
["marina", "josipa", "nikola", "vinko", "filipa"] | ["josipa", "filipa", "marina", "nikola"] | "vinko" |
["mislav", "stanko", "mislav", "ana"] | ["stanko", "ana", "mislav"] | "mislav" |
입출력 예 설명
코드 1: Sort 사용
- Participant 배열과 Completion 배열을 순서대로 정렬
- 정렬한 배열을 비교해서 일치하지 않는 선수의 인덱스를 리턴하면 참가하지 않는 선수의 명단을 구할 수 있다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
for(int i=0;i<completion.length;i++){
if(!participant[i].equals(completion[i])){
answer+=participant[i];
return answer;
}
}
answer+=participant[participant.length-1];
return answer;
}
}
코드 1: 실행 결과
- HashMap에 Participant의 참가자를 key 값으로 하고 value에 +1을 넣어준다.
- 이 해시 맵을 이용해 Completion의 명단이 HashMap에 key 값에 존재하면 value에 -1 한다.
- 각 key값의 value값이 0이 아닌 경우 완주하지 못한 명단을 구할 수 있다.
getOrDefault(Object key, V DefaultValue) : 찾고 있는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드
// key : 값을 가져와야 하는 요소의 키
// defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
// 반환 값 : 찾는 key가 존재하면 해당 key에 매핑된 값을 반환하고, 아니면 디폴트 값 반환
코드 2: HashMap
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hash= new HashMap<>();
for(String person: participant){
hash.put(person,hash.getOrDefault(person, 0)+1);
}
for(String person: completion){
hash.put(person, hash.getOrDefault(person, 0)-1);
}
for(String key:hash.keySet()){
if(hash.get(key)>0){
answer=key;
break;
}
}
return answer;
}
}
코드 2: 실행 결과