본문 바로가기
알고리즘/프로그래머스 문제풀이

[프로그래머스 JAVA] 완주하지 못한 선수

by 잔디🌿 2025. 5. 15.

    최근에 개발하느라 코테 공부를 진짜 안했다

    반성중..

    스프링으로 개발 계속 했으니까 잘하겠지 했는데 걍 아님.. 자동완성에 길들여져서 메서드 외운게 다 날아간거같다

     

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

     

    프로그래머스

    SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

    programmers.co.kr

    이런식으로 참가자와 완주자가 있고, 참가자 중 완주를 하지 못한 사람을 찾는 문제이다.

    처음에는 해시맵에 넣고 일치하지 않는거 빼면 되겠네 했는데

    중복이 있다고 한다(문제를 잘 읽자)

     

    그래서 해시맵에다가 각 이름과 갯수를 넣고, 완주자를 순회하면서 갯수(value)의 수를 하나씩 줄여나가도록 했다.

     

    그 다음 해시맵을 순회하면서 value가 0이 아닌 값을 발견하면 리턴하도록 하였다.

     

    다른 사람의 코드를 참고하면서 알게 된건데 hashmap.keySet()하면 해시맵 내부의 키들을 리스트로 받을 수 있다.

    또한 hashmap.containsKey()메서드를 사용하면 해당 키가 이미 존재하는지 알 수 있다.

     

    import java.io.*;
    import java.util.*;
    
    class Solution {
        public String solution(String[] participant, String[] completion) {
            Map<String,Integer> hashmap = new HashMap<>();
            
            for(String now : participant){
                if(hashmap.containsKey(now)){
                    hashmap.put(now,hashmap.get(now) +1);
                }
                else{
                    hashmap.put(now,1);
                }
            }
            
            for(String now : completion){
                hashmap.put(now,hashmap.get(now)-1);
            }
            
            for(String now : hashmap.keySet()){
                if(hashmap.get(now) != 0){
                    return now;
                } 
            }
            return null;
        }
    }