반응형

안녕하세요 Jin's 입니다.

 

코딩테스트 고득점 Kit 첫 문제 풀이입니다ㅎㅎ

앞으로 일주일에 하나는 꼭 올리려고 노력하겠습니다.

 

오늘의 코딩테스트 문제는 해시 중 완주하지 못한 선수에 대한 문제 풀이 입니다.

 

 

해당 문제는 해시라는 카테고리에 있기 때문에 HashMap을 활용하였습니다.

여기서 HashMap의 getOrDefault를 처음 쓰게 되었습니다.

getOrDefault 대해서 간략히 설명드리면 기존에 해당 키가 존재한다면 1을 없다면 0을 반환해줍니다.

 

제 문제 풀이 중 map.put(p,map.getOrDefault(p,0)+1이라고 사용한 이유는

입출력 예시3) [mislav, stanko, mislav, ana] 의 값으로 값의 변화를 설명드리자면

mislav가 처음 들어왔을경우는 값이 mislav,1

mislav가 두번째 들어왔을경우는 값이 mislav,2 로 들어가게 되고

완주한 선수들의 목록(completion)을 동일한 map에 put하게 되는경우 value를 -1을 해주게 되면

나머지 선수들의 값은 0이 되고 mislav의 값은 1로 남아있게 되어 answer 값이라는 것을 알 수 있게 됩니다.

이러한 개념은 동명이인이 아니더라도 값이 1로 남게 됩니다.

 

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String,Integer> map = new HashMap<String,Integer>();
        
        for(String p : participant){
        	map.put(p,map.getOrDefault(p, 0)+1);
        }
        
        for(String c: completion){
        	map.put(c,map.get(c)-1);
        }
        
        for(String m : map.keySet()){
        	if(map.get(m) > 0){
            		answer = m;
            	}
	}
        return answer;
    }
}

 

 

여러분도 한번 풀어보세요~

 

 

반응형

+ Recent posts