완주하지 못한 선수

이은미·2025년 7월 20일
0

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42576

문제파악

참가자 목록과 완주자 목록이 주어지고, 한 명이 완주를 못했을 때 그 사람 이름을 찾아내는 문제
이름이 중복될 수도 있기 때문에 단순 비교로는 안 되고, Map을 써야 할 것 같다.

접근방법

HashMap으로 이름과 등장 횟수를 기록
참가자 배열을 돌면서 이름마다 +1씩 해주고, 완주한 사람은 -1 처리
마지막에 값이 1인 사람만 찾아내면 되는 방식

문제 풀이

import java.util.*;

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

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

        for (String c : completion) {
            map.put(c, map.get(c) - 1);
        }

        for (String key : map.keySet()) {
            if (map.get(key) != 0) {
                return key;
            }
        }

        return "";
    }
}
profile
파이팅 해야지

0개의 댓글