본문 바로가기
IT/알고리즘

프로그래머스 완주하지 못한 선수

by 어센트 2020. 5. 17.

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

 

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

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

programmers.co.kr

 

 

 

해쉬유형에 있어서 이 문제를 선택해서 풀었다. 자바로 해쉬를 활용해본 기억은 알고리즘 수업시간과 자바 이론 수업때 예제를 따라 해본적 밖에 없어서 문법이 기억나지 않아 블로그를 참고했다.

hash.getorDefault()메소드는 해쉬에 키에 해당하는 값이 존재하면 그 값을 쓰고 그렇지 않다면 디폴트 값인 두번째 인자(이 문제에서는 0) 으로 해주는 기능을 한다.

해쉬에 쌍을 넣을 때 put메소드를 사용한다.

 

 

풀이

import java.util.*;

public class 완주하지못한_선수 {

    public String solution(String[] participant, String[] completion) {
        Map<String, Integer> hash = new HashMap<>();
        for(String s :participant){
            hash.put(s,hash.getOrDefault(s,0)+1);
        }
        for(String s: completion){
            hash.put(s,hash.get(s)-1);
        }
        for(String key:hash.keySet()){
            if(hash.get(key) !=0) return key;
        }
        return "";
    }

}