티스토리 뷰

programmers.co.kr/learn/courses/30/lessons/42576

 

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

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

programmers.co.kr

 

풀이

 

1) 맵생성

2) participant를 맵에 담을거임

2-1) participant[i] 가 없을경우 : 1

2-2) participant[i] 가 있을경우 : 기존값에 +1

3) completion와 비교해서 있으면 1씩 감소

4) 마지막에 value가 1인 애가 딱 하나 나올거임. Map.Entry를 이용해서 key를 출력

 

주의사항

 

1) x

 

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        Map<String, Integer> map = new HashMap<>();
        
        for(int i=0; i<participant.length; i++){
            if(map.get(participant[i]) == null){
                map.put(participant[i], 1);
            }else{
                map.replace(participant[i], map.get(participant[i])+1);
            }
        }
        
        for(int i=0; i<completion.length; i++){
            if(map.get(completion[i]) != null){
                map.replace(completion[i], map.get(completion[i])-1);
            }
        }
        
        for(Map.Entry<String, Integer> entry : map.entrySet()){
            if(entry.getValue() == 1){
                answer = entry.getKey();
                break;
            }
        }
        
        return answer;
    }
}

 

후기

 

 문제는 쉬웠지만 Map의 Key값을 가져오는데 Map.Entry의 사용법을 까먹어서 다시 보게되었다.

Map.Entry는 정말 유용한 API인것 같다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함