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

fever·2024년 7월 26일
0

99클럽 코테 스터디

목록 보기
5/42
post-thumbnail

🛠️ 문제

💻 풀이

처음 생각한 방법은 단순히 정렬하고 비교였다.
하지만 하다보니 코드 길어지고 너무 구구절절해져서 급하게 HashMap을 공부하고 다시 짰다.

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
        HashMap<String, Integer> map = new HashMap<>();
        
        // 참가자 카운트 (동명이인일시 +1)
        for (String name : participant) {
            map.put(name, map.getOrDefault(name, 0) + 1);
        }
        
        // 완주자 카운트 (완주할 시 -1)
        for (String name : completion) {
            map.put(name, map.get(name) - 1);
        }
        
        for (String key : map.keySet()) {
            if (map.get(key) > 0) {
                return key;
            }
        }

        return "";
    }
}

생각의 순서
1. 동명이인을 처리할 방법: key 중복이 되지 않는 map을 쓰자!
2. 동명이인 처리 후 완주자 비교: 해당 값을 변경해서 알려주자!
3. 처리후 출력: map을 돌며 값이 있다면 해당 키를 출력하자! (값이 있다는 것은 완주자 비교시 값이 바뀌지 않았다는 것, 그리고 동명이인이 있다는 것.)

🤔 고찰

  1. MAP이 아니라 정렬로 해결한다면 어떤 식이 효율적일까?
  2. 나는 왜 바로 MAP를 떠올리지 못하는가...?😂
profile
선명한 삶을 살기 위하여

0개의 댓글