IT/Java

[프로그래머스, Level 1] 완주하지 못한 선수(JAVA)

배당 줍는 다람쥐 2021. 8. 11. 13:06
반응형

안녕하세요.

배당 줍는 다람쥐입니다.

 

오늘 업로드하는 문제는 프로그래머스 Level 1, 완주하지 못한 선수입니다.

그러면 오늘도 문제 풀이 시작하겠습니다.


문제

프로그래머스 출처

사이트 주소는 아래와 같습니다.

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

 

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

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

programmers.co.kr

 

문제풀이
import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        HashMap<String, Integer> hashmap = new HashMap<String, Integer>();
        
        for(int i = 0; i < participant.length; i++){    
            if(hashmap.containsKey(participant[i])){
                int cnt = hashmap.get(participant[i]);
                hashmap.put(participant[i], cnt+1);
            }
            else
                hashmap.put(participant[i], 1);
        }
        
        for(int i = 0; i < completion.length; i++){
            if(hashmap.containsKey(completion[i])){
                int cnt = hashmap.get(completion[i])-1;
                hashmap.put(completion[i], cnt);
            }
        }
        
        for(String key : hashmap.keySet()){
            if(hashmap.get(key) == 1){
                answer = key;
                break;
            }
        }
        
        return answer;
    }
}

해당 문제의 핵심은 해시 사용하는 방법을 아는지를 물어보는 것 같습니다.

하여, 위와 같이 코드를 작성해보았습니다.

 

추가로, 저 같은 경우에는 containsKey 함수를 활용하여 문제를 풀이하였는데,

다른 분들의 풀이를 보니, getOrDefault라는 함수가 새로 나와서

제가 작성한 풀이보다 더 짧게 구현을 하셔서 아래에 해당 내용 짧게 적어봅니다.

 

// 함수설명 : 찾는 키가 존재한다면, 찾는 키의 값을 반환하고, 없다면 기본 값을 반환하는 메소드
getOrDefault(Object Key, V DefaultValue)

// 매개변수 
// key : 값을 가져와야 하는 요소의 키
// defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값

// Example
import java.util.HashMap;

public class MapGetOrDefaultEx{
	public static void main(String arg[]) {
    	String [] alpha = {"a", "b", "c", "b"};
        HashMap<String, Integer> hashmap = new HashMap<String, Integer>();
        
        for(String key : alpha)
        	hashmap.put(key, hashmap.getOrDefault(key, 0) + 1);
            
        System.out.println("결과 : " + hashmap);
    }
}

 

해시를 사용하는 문제 같은 경우는 네이버/카카오 같이 프로그래머스나 구름으로 진행하는

코딩 테스트에서 1번 문제로 자주 나올 수 있으니,

여러 문제를 풀어보시는 것을 추천드립니다.:)

 

오늘도 제 블로그 글을 봐주셔서 감사합니다.

그럼 안뇽~

 

반응형