(Java)프로그래머스 - 완주하지 못한 선수

윤준혁·2024년 3월 7일

나의 풀이

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> map = new HashMap<>();
        
        for (String s : participant) map.put(s, map.getOrDefault(s, 0) + 1); // 1
        for (String s : completion) map.put(s, map.get(s) - 1); // 2
        
        for (String key : map.keySet()) { // 3
            if (map.get(key) != 0){
                answer = key;
            }
        }
        
        return answer;
    }
}

과정

  1. 참가자 명단을 순회하며, 참가자의 이름을 key로 하고, 출현 횟수를 value로 하는 항목을 map에 추가한다. (map에 key s가 있으면 해당하는 value를 반환하고, 없으면 0을 반환)
  2. 완주한 사람들의 명단을 순회하며, 완주자의 이름에 해당하는 map의 항목의 value를 1씩 감소
  3. value가 0이 아닌 항목을 찾는다(완주하지 못한 참가자의 이름에 해당하는 항목의 value는 0이 아님)

다른 사람 풀이

import java.util.*;
class Solution {
    public String solution(String[] participant, String[] completion) {
        Arrays.sort(participant);
        Arrays.sort(completion);
        int i;
        for ( i=0; i<completion.length; i++){

            if (!participant[i].equals(completion[i])){
                return participant[i];
            }
        }
        return participant[i];
    }
}

0개의 댓글