완주하지 못한 선수

J·2021년 4월 5일
0

코딩테스트 연습

목록 보기
20/28

  1. 총점: 50 (정확성 50, 효율성 0)
    리스트에 participant 넣고 completion과 비교하여 같을 때마다 리스트에서 remove

  2. 총점 : 70 (정확성 50, 효율성 20)
    participant가 담겨있는 list와 completion정렬하여 비교

  3. 총점 : 💯 (정확성 50, 효율성 50)
    아 그냥 정렬해서 같지 않을 때 리턴하면 된다.
    7점 획득!

import java.util.*;

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

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

        return answer;
    }
}

원래는 해시문제인데 해시를 몰라서 이렇게 풀었음..
나랑 코드가 비슷한사람 중에 멋있는 코드 발견.
for의 int i를 바깥에 선언해서
participant[participant.length-1];을 participant[i];로 사용했음.

다른 사람 코드 1

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;
    }
}

다른 사람 코드 2

import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

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

        Map<String, Long> participantMap = Arrays.asList(participant).stream()
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        for(String name : completion) {

            Long value = participantMap.get(name) - 1L;

            if(value == 0L) {
                participantMap.remove(name);
            } else {
                participantMap.put(name, value);
            }
        }

        return participantMap.keySet().iterator().next();
    }
}

0개의 댓글