programmers lv2 전화번호 목록(고득점 kit)


완주하지 못한 선수
완주하지 못한 선수는 딱 한명이다.
그래서 완주자를 먼저 hashmap에 넣고,

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        HashMap<String, Integer> hm= new HashMap<>();
        for(String name : completion){ //완주자 먼저
            if (hm.containsKey(name)) {
                hm.replace(name, hm.get(name)+1);
            } else {
                hm.put(name,1);
            }
        }
        for(String name : participant){
            if(hm.containsKey(name)){
                if(hm.get(name) == 1){
                    hm.remove(name);
                }else{
                    hm.replace(name, hm.get(name)-1);
                }
            }else{
                return name;
            }
        }
            return null;
        }
    }
}

정확성 테스트
테스트 1 〉 통과 (0.02ms, 52.7MB)
테스트 2 〉 통과 (0.06ms, 51.9MB)
테스트 3 〉 통과 (0.35ms, 52.9MB)
테스트 4 〉 통과 (0.87ms, 53.8MB)
테스트 5 〉 통과 (0.72ms, 53.4MB)
효율성 테스트
테스트 1 〉 통과 (31.55ms, 81.2MB)
테스트 2 〉 통과 (64.66ms, 89.2MB)
테스트 3 〉 통과 (74.68ms, 99.2MB)
테스트 4 〉 통과 (44.74ms, 95.4MB)
테스트 5 〉 통과 (76.34ms, 95.6MB)
채점 결과
정확성: 50.0
효율성: 50.0
합계: 100.0 / 100.0


아래는 500명이 제출한 답안
Arrays.sort 먼저 정렬하고, (완주하지 못한 선수는 한명이기에) 두 배열이 일치하지 않으면 바로 return 함
해시 고득점 kit에서 만나지 않고, 날것의 문제로 만났더라면 이 접근법이 먼저 생각났을 수도 있을 것 같다.

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

정확성 테스트
테스트 1 〉 통과 (0.29ms, 53.1MB)
테스트 2 〉 통과 (0.33ms, 52.1MB)
테스트 3 〉 통과 (3.26ms, 53.1MB)
테스트 4 〉 통과 (4.81ms, 53.6MB)
테스트 5 〉 통과 (6.42ms, 54MB)
효율성 테스트
테스트 1 〉 통과 (127.50ms, 82.2MB)
테스트 2 〉 통과 (218.40ms, 90.9MB)
테스트 3 〉 통과 (284.19ms, 90.4MB)
테스트 4 〉 통과 (301.77ms, 97.3MB)
테스트 5 〉 통과 (322.45ms, 95.6MB)
채점 결과
정확성: 50.0
효율성: 50.0
합계: 100.0 / 100.0




© 2020.08. by ritajeong

Powered by ritajeong