본문 바로가기
카테고리 없음

99클럽 코테 스터디 11일차 TIL + 완주하지 못한 선수

by leek94 2024. 11. 8.


- 오늘의 학습 키워드 : HashMap, getOrDefault(), entrySet(), entry.getValue(), entry.getKey()

 

문제분석

문제 분석

이 문제는 마라톤 참가자 목록과 완주자 목록을 비교하여 완주하지 못한 한 명의 선수를 찾는 문제입니다. 해시맵을 활용하여 효율적으로 해결할 수 있습니다.

핵심 포인트

  • 참가자 중 한 명만 완주하지 못했습니다
  • 동명이인이 있을 수 있습니다
  • 효율적인 탐색을 위해 HashMap을 사용합니다

해결 방법

  1. HashMap을 생성하여 참가자 명단을 저장합니다
  2. 참가자의 이름을 키로, 등장 횟수를 값으로 저장합니다
  3. 완주자 명단을 순회하면서 해당 이름의 카운트를 감소시킵니다
  4. 최종적으로 값이 1인 참가자가 완주하지 못한 선수입니다



- 오늘의 회고


  - 어떤 문제가 있었고, 나는 어떤 시도를 했는지

중복되는 이름이 있는 경우를 해결해야 했음

map의 경우 중복되는 키를 저장할 시 제알 나중에 저장한 값이 저장됨


  - 어떻게 해결했는지

 getOrDefault()를 사용해서 중복될 시 값을 +1로 해결 하였음

 

문제 풀이

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        
        Map<String, Integer> map = new HashMap<>();
        
        for(int i =0 ; i < participant.length; i++){
            map.put(participant[i], map.getOrDefault(participant[i], 0) +1);    
        }
        
        for(int i = 0; i < completion.length; i++){
            map.put(completion[i], map.getOrDefault(completion[i], 0) -1);
        }
        
        for(Map.Entry<String, Integer> entry : map.entrySet()){
            if(entry.getValue() == 1 ) return entry.getKey();
        }
        
      
        return "";
    }
}