본문
완주하지 못한 선수 #해시 #level1
프로그래밍/코딩테스트(java) 2021. 1. 7. 18:53
반응형
💡 해시
해시는 Key-value쌍으로 데이터를 저장하는 자료구조입니다.
💡 풀이1 - HashMap
HashMap에 Participant의 참가자를 key 값으로, value는 +1을 넣어줍니다. 그리고 이 해시 맵을 이용 하여 Completion의 명단이 HashMap에 key 값에 존재하면 value에 -1해 줍니다. 그러면 각 key값의 value값이 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;
}
}
return answer;
}
}
P.S. getOrDefault
찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드
getOrDefault(Object key, V DefaultValue)
-. key : 값을 가져와야 하는 요소의 키입니다.
-. defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값입니다.
→ 반환값 : 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 아니라면 defualt 반환됩니다.
public static void main(String[] args) {
String[] alphabet = { "A", "B", "C", "A" };
HashMap<String, Integer> hm = new HashMap<>();
for (String key : alphabet)
hm.put(key, hm.getOrDefault(key, 0) + 1);
// 결과 : {A=2, B=1, C=1}
System.out.println("결과 : " + hm);
}
💡 풀이2 - Sort
다음 풀이는 Sort를 이용한 풀이입니다. Participant 배열과 Completion 배열을 순서대로 정렬하여 놓고, 일치하지 않는 선수의 인덱스를 리턴하면 참가하지 않는 선수의 명단을 구할 수 있습니다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
int i;
for ( i=0; i<completion.length; i++){
if (!participant[i].equals(completion[i])){
return participant[i];
}
}
return participant[i];
}
}
반응형
댓글