Algorithm/Java

프로그래머스 - 완주하지 못한 선수 java :: 해시 :: 42576

고고마코드 2022. 7. 5. 21:00
반응형

문제 링크

코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 스쿨 (programmers.co.kr)


문제 풀이

  • 주의할 점
    • 동명이인이 있을 수 있기 때문에 remove 같은 메소드로는 정답을 구할 수 없습니다.

1번 풀이

public String solution(String[] participant, String[] completion) {
    String answer = new String();
    HashMap<String, Integer> map = new HashMap<String, Integer>();
    for(String runner : participant) map.put(runner, map.getOrDefault(runner, 0) + 1);
    for(String runner : completion) map.put(runner, map.get(runner) - 1);

    for(String runner : map.keySet()) {
        if(map.get(runner) != 0) {
            answer = runner;
            break;
        }
    }

    return answer;
}
  • public V getOrDefault(Object key, V defaultValue)
    key가 이미 있는지 확인하고, 있으면 해당 key의 값을 반환하고, 없으면 defulatValue의 값을 반환합니다.

  • map.getOrDefault(runner, 0)
    저 같은 경우는 이렇게 썼기 때문에 map에 runner 이름이 이미 삽입되어 있으면 해당 runner의 value 값을 가져오고 없으면 0을 삽입합니다.
    participant를 순회할 때는 1씩 증가시키고
    completion을 순회할 때는 1씩 감소시켜서
    최종적으로 map에 저장되어 있는 value가 0이 아닌(또는 0보다 큰) 경우가 완주하지 못한 선수입니다.

테스트 처리속도

  • 🔥 0.05ms ~ 0.84ms

반응형