본문

완주하지 못한 선수 #해시 #level1

반응형

 

💡 해시

해시는 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];
    }
}

 

 

출처: https://junghn.tistory.com/entry/

반응형

공유

댓글