우주먼지

💡 문제 파악

마라톤 선수들의 전체명단인 배열 participant와 완주한 선수들의 명단인 배열 completion이 주어진다.

완주하지 못한 선수의 이름을 return 하도록 solution 함수 작성

 

제한사항

  • 동명이인이 있을수 있다.
  • 참가자의 이름은 1~20개 이하의 알파벳 소문자로 이루어져 있다.
  • completion의 길이는 participant의 길이보다 1 작다.

 

입출력 예시

participant completion return
["leo", "kiki", "eden"] ["eden", "kiki"] "leo"
["marina", "josipa", "nikola", "vinko", "filipa"] ["josipa", "filipa", "marina", "nikola"] "vinko"
["mislav", "stanko", "mislav", "ana"] ["stanko", "ana", "mislav"] "mislav

 

풀이

구해야 하는 값은 완주하지 못한 사람을 구하는것이다.

즉, completion 배열에는 없고 participant배열에는 있는 사람을 찾으면 된다.

  • 이름과 인원수를 각각 Key-Value 형식으로 completion을 먼저 순회하면서 인원수 +1
    그 다음 participant를 순회하면서 인원수 -1을 한다.
  • 인원수가 0이 아닌 사람을 선택한다.

 

코드

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> hm = new HashMap<>();

        // 중복제거하면서 순회하고 인원수 +1
        for (String player : participant) {
            hm.put(player, hm.getOrDefault(player, 0) + 1);
        }

        // 순회하면서 완주한 선수에 대해 -1
        for (String player : completion) {
            hm.put(player, hm.get(player) - 1);
        }

        // -1이 되지 못한 선수(Value가 1인 선수)를 answer에 담는다
        for (String key : hm.keySet()) {
            if (hm.get(key) != 0) {
                answer = key;
            }
        }
        return answer;
    }
}

'Algorithm 풀이 > Programmers' 카테고리의 다른 글

고득점 Kit - Hash (베스트 앨범)  (0) 2023.03.06
고득점 Kit - Hash (위장)  (0) 2023.03.05
고득점 Kit - Hash (전화번호 목록)  (0) 2023.03.05
고득점 Kit - Hash (폰켓몬)  (2) 2023.03.05
Level 0 옹알이(1)  (0) 2023.01.14
profile

우주먼지

@o귤o

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그