[PROG] 42576 완주하지 못한 선수(Hash, getOrDefault)

호호빵·2022년 9월 13일
0

Algorithm

목록 보기
23/46

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42576

나의 풀이


class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";

        for (int i = 0; i < completion.length; i++) {
            for (int j = 0; j < participant.length; j++) {
                if (completion[i].equals(participant[j])) {
                    completion[i] = "";
                    participant[j] = "";
                }
            }
        }

        for (int i = 0; i < participant.length; i++) {
            if (!participant[i].equals("")) {
                answer = participant[i];
            }
        }


        return answer;
    }
}
  • 답은 나왔지만 이중for문으로 시간초과였다.
  • Hashset을 쓰는 문제였다.

다른 풀이

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";

        HashMap<String, Integer> runner = new HashMap<>();

        for (String a : participant) {
            runner.put(a, runner.getOrDefault(a, 0) + 1);
        }

        for (String b :completion ) {
            runner.put(b, runner.get(b) - 1);
        }

        for (String key : runner.keySet()) {
            if (runner.get(key) != 0) {
                answer = key;
                break;
            }
        }


        return answer;
    }

    public static void main(String[] args) {

        Solution soll = new Solution();
        String[] c = {"mislav", "stanko", "mislav", "ana"};
        String[] d = {"stanko", "ana", "mislav"};
        System.out.println(soll.solution(c, d));

    }
}

  • HashSet을 사용, 중복체크를 위해 getorDefault 함수 사용

getOrDefault

-  찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드

getOrDefault(Object key, V DefaultValue)
매개 변수 : 이 메서드는 두 개의 매개 변수를 허용합니다.

key : 값을 가져와야 하는 요소의 키입니다.
defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값입니다.

반환 값 : 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 
		그렇지 않으면 디폴트 값이 반환됩니다.


getOrDefault

profile
하루에 한 개념씩

0개의 댓글