Coding Test/[프로그래머스] Java

[프로그래머스 / Java] Lv.1 완주하지 못한 선수

annovation 2025. 5. 10. 09:35

Question

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

 

프로그래머스

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

programmers.co.kr


Code

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        HashMap<String, Integer> map = new HashMap<>();
        
        for(String player : participant) {
            map.put(player, map.getOrDefault(player, 0) + 1);
        }
        
        for(String player : completion) {
            map.put(player, map.get(player) - 1);
        }
        
        for(Map.Entry<String, Integer> entry : map.entrySet()) {
            if(entry.getValue() != 0) {
                answer = entry.getKey();
                break;
            }
        }
        
        return answer;
    }
}
  • HashMap<K, V>  [각주:1] 
    • Key-Value 쌍으로 데이터를 저장하는 자료구조
    • 키는 중복 불가, 값은 중복 가능
    • 검색/삽입/삭제 속도가 빠름 (평균 시간 복잡도 O(1))
    • 순서를 보장하지 않음 (LinkedHashMap은 순서 보장)
    • 키가 같으면 덮어씀 (put 동작)
  • getOrDefault(K key, V defaultValue) [각주:2]
    • key가 map에 존재하면 그 key에 해당하는 value를 반환하고, 존재하지 않으면 defaultValue를 반환
    • null 체크 없이 안전하게 값을 가져올 수 있음
  • Map.Entry<K, V> [각주:3]
    • Map 내부의 key-value 쌍을 하나의 객체처럼 다루는 인터페이스
    • key와 value를 모두 조회할 수 있음
    • Map을 순회할 때 각 쌍을 하나의 단위로 다루기 위해 사용
  • map.entrySet() [각주:4]
    • Map에 들어있는 모든 Map.Entry 객체의 집합(Set)을 반환

출처

https://hu-coding.tistory.com/104

 

[Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap)

https://programmers.co.kr/learn/courses/30/lessons/42576?language=java 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라

hu-coding.tistory.com