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

Boknami·2023년 8월 13일
0

프로그래머스

목록 보기
17/29

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

🕐 풀이 시간 : 30분

🌄시행착오

처음에는 list를 만들고 remove시킬려고 했는데 너무 쉽게 풀린다 싶어서 다시 확인하니 동일 이름이 존재할 수 있다는 부분이 있어 다 지우고 다시 풀었다..문제를 좀 똑바로 읽자.

핵심은 맵이고 맵을 제대로 다룰 수 없어서 좀 오래 걸렸다. 문제 자체는 크게는 어렵지 않았다.

💡아이디어

해시맵 생성
해시맵에 값 존재 여부에 따른 로직처리

성공코드

import java.util.*;
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        //해쉬맵 생성
        HashMap<String,Integer> map = new HashMap<>();
        for(int i = 0 ; i < participant.length; i++){
            //map에 키가 존재할 때
            if(map.containsKey(participant[i])){
                map.put(participant[i], map.get(participant[i]) + 1);
            }
            //map에 값이 없을 때는 생성!
            else if(!map.containsKey(participant[i])){
                map.put(participant[i], 1);
            }
        }
        
        //완주자 배열을 돌려 해쉬맵에 값을 줄이자!
        for(int i = 0 ; i < completion.length; i++){
            if(map.containsKey(completion[i])){
                map.put(completion[i] , map.get(completion[i])-1);
            }
        }
        
        //남아있는 참여자 배열을 찾자!
        for (String key: map.keySet()){
            if(map.get(key) > 0)
                answer += key;
        }
        return answer;
    }
}

0개의 댓글

관련 채용 정보