프로그래머스(Level 1) - 🏃‍♀️ 완주하지 못한 선수

Gammi·2023년 4월 3일
0

프로그래머스

목록 보기
56/69

✔ 문제






✔ 해결


import java.util.*;

class Solution {
  public String solution(String[] participant, String[] completion) {
    String answer = "";
    Map<String, Integer> hm = new HashMap<>();
    
    for(String p : participant) hm.put(p, hm.getOrDefalut(p, 0) + 1);
    // 1을 저장, 근데 중복이 있을 때는 +1함 동명이인이면 2,3,4 이런 식으로 저장됨
    
    for(String c : completion) hm.put(c, hm.get(c) -1);
    // 아까 그 숫자에서 -1 하기
    
    for(String key : hm.keySet()) {
      if(hm.get(key) != 0) {
      // 만약 완주했다면 1이었다가 -1해서 다시 0이 되어야 함
      // 0이 아니면 완주하지 않았다는 뜻!
        answer = key;
        break;
      }
    }
    
    return answer;
  }
}










처음에는 Integer 말고 Boolean 타입을 사용해서 풀고 싶었는데 이렇게 하니까 동명이인 선수들 처리하기가 복잡해서 결국은 Integer를 사용해서 풀었다...

hash 쉽지 않네,,,

그래도 하다보면 익숙해지겠지?

profile
개발자가 되었어요⭐️

0개의 댓글