[프로그래머스] 42576번 완주하지 못한 선수 Java

dustle·2023년 3월 15일
1

완주하지 못한 선수

정렬을 한 후 Arrays.sort() 를 하여 답을 찾는 방법과 HashMap 을 사용하는 방법이 있습니다.
sort 는 시간 복잡도가 O(nlogn)이고
HashMap 을 사용한다면 검색 시간이 O(n) 입니다.

HashMap 방식에서 getOrDefault(Object key, V DefaultValue)로 값이 없을 때 기본값을 가져오게 해주는 메소드를 활용하면 편합니다.

List 사용 방법

import java.util.Arrays;

class Solution {
    public String solution(String[] participant, String[] completion) {

        Arrays.sort(participant);
        Arrays.sort(completion);

        for (int i = 0; i < completion.length; i++) {
            if (!participant[i].equals(completion[i]))
                return participant[i];
        }
        return participant[participant.length - 1];
    }
}

HashMap 사용 방법

import java.util.HashMap;
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> hs = new HashMap<>();

        for(String person : participant) hs.put(person, hs.getOrDefault(person, 0) + 1);
        for(String winner : completion) hs.put(winner, hs.get(winner) - 1);

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

0개의 댓글

관련 채용 정보