잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

 

 

 

 

 

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        HashMap<String, Integer> name = new HashMap<>();
        String answer = "";
        
        for (int i = 0; i < completion.length; i++) {
            name.put(completion[i], name.getOrDefault(completion[i], 0) + 1);
        }
        
        for (int i = 0; i < participant.length; i++) {
            int num = name.getOrDefault(participant[i], 0);
            
            if (num == 0) {
                answer = participant[i];
                break;
            }
            
            name.put(participant[i], num - 1);
        }
        
        return answer;
    }
}

 

정확성 테스트
테스트 1 통과 (0.03ms, 74MB)
테스트 2 통과 (0.06ms, 75.8MB)
테스트 3 통과 (0.41ms, 72.9MB)
테스트 4 통과 (0.76ms, 81.2MB)
테스트 5 통과 (0.48ms, 78.2MB)
 
효율성 테스트
테스트 1 통과 (33.16ms, 81.9MB)
테스트 2 통과 (53.05ms, 88.9MB)
테스트 3 통과 (54.83ms, 94.9MB)
테스트 4 통과 (57.47ms, 97.3MB)
테스트 5 통과 (77.58ms, 95.6MB)

 

 

 

 

 

completion에 있는 이름들을 해시맵에 넣고, participant에 있는 이름을 하나씩 지워간다.

만약 getOrDefault()가 0을 리턴하면 그대로 그냥 answer에 이름 넣고 종료.

 

 

 

 

 

728x90

+ Recent posts