20. 완주하지 못한 선수

// 해쉬맵을 사용하기 위한 임포트 추가
import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) 
    { 	
    	String answer = "";
    	
    	HashMap<String,Integer> map = new HashMap<>();
      	// 해쉬테이블에 참가자들의 이름을 키값으로 넣어주고 디폴트값을 0에 1씩 추가
    	for ( String person : participant)
    	{    		
    		map.put(person, map.getOrDefault(person, 0) +1);
    	}
      	// 해쉬 테이블에 완주자 이름의 키의 밸류값을 1씩 빼줌 ( 동명이인 체크 )
    	for ( String person : completion)
    	{
    		map.put(person, map.get(person) -1);
    	}
    	// 해쉬테이블의 키 중에서 밸류값이 1인 키값을 찾아 answer로 반환  
    	for ( String key : map.keySet())
    	{
    		if ( map.get(key) == 1)
    		{
    			answer = key;
    		}
    	}

    	return answer;
        
    }
}

해쉬 테이블의 개념과 for문과 if문으로만 해결하려고 하면 모든 배열을 다 찾아서 배열의 길이가 커질수록 처리 속도가 늘어나지만 해쉬테이블을 사용하면 배열의 길이와 상관없이 빠른 속도로 처리할 수 있다는 것을 배울 수 있었다.

// 해쉬 테이블을 배우기 전에 for문과 if문으로만 작성한 풀이 //

         String answer = "";
         for ( int i =0; i<participant.length; i++ )
         {
           if (!answer.equals(""))
           {
             break;
           }
           else
           {
             for( int j =0; j<completion.length; j++)
             {
               if (participant[i].equals(completion[j]) )
               {
                 answer = "";
                 completion[j] = "";
                 break;
               }                        
               answer = participant[i];
             }
          }
          
        }
        
         return answer;

좋은 웹페이지 즐겨찾기