[PGS] 완주하지 못한 선수 - JAVA

최영환·2023년 8월 1일
0

Programmers

목록 보기
14/43

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";

        HashMap<String, Integer> map = checkParticipant(participant);

        checkCompletion(completion, map);

        return findAnswer(answer, map);
    }

    private static HashMap<String, Integer> checkParticipant(String[] participant) {
        HashMap<String, Integer> map = new HashMap<>();

        for (String name : participant) {
            map.put(name, map.getOrDefault(name, 0) + 1);
        }
        return map;
    }

    private static void checkCompletion(String[] completion, HashMap<String, Integer> map) {
        for (String name : completion) {
            map.put(name, map.get(name) - 1);
        }
    }

    private static String findAnswer(String answer, HashMap<String, Integer> map) {
        for (String key : map.keySet()) {
            if (map.get(key) != 0) {
                answer = key;
            }
        }
        return answer;
    }
}

📄 해설

접근

  • HashMap<String, Integer> 을 사용한다. 동명이인이 있을 수 있으므로 값을 확인하도록 Integer 사용
  • 참가자 명단의 이름을 해시 맵의 키로 등록하고, 해당 키의 값을 1 증가시킨다.
  • 완주자 명단의 이름을 해시 맵에서 찾고, 해당 키의 값을 1 감소시킨다.
  • 해시 맵을 탐색하면서 정수 값이 0이 아닌 키를 찾는다. (참가자 수 - 완주자 수 == 0 이 되어야 그 선수가 완주한 것)

과정

  • 접근과 동일하므로 생략
profile
조금 느릴게요~

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

저런 완주를 해야할텐데

답글 달기