99클럽 코테 스터디 11일차 TIL - HashMap과 중복 허용하기

수삼·2024년 11월 7일
0

코딩테스트

목록 보기
16/44

        String answer = "";
        HashMap<String, Integer> map = new HashMap<>();

        for (String p : participant) {
            if(map.containsKey(p)){
                map.put(p, map.get(p) + 1);
            } else {
                map.put(p, map.getOrDefault(p, 1));
            }
        }

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

        for(String m : map.keySet()){
            if(map.get(m) == 1){
                answer = m;
            }    
        }
        
        return answer;

완주자 명단에서 참가자 명단을 빼면 되는데
내장 메소드를 이용하면 대게 중복이 제외된다.
참가자 명단에 있으면 +1을 해주고 완주자 명단에 있으면 -1를 해서 0이 아닌 사람을 반환했다.

Map

entrySet

  • 키와 값 모두 필요할때 key, value에 동시 접근 가능하다

keySet

  • 키만 필요할 때 사용한다.

중복된 코드 제거하기

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

위,아래는 똑같이 실행되는 코드다.. getOrDefault를 쓰면 값이 없을때 0을 넣어주니까
굳이 containsKey로 거르지 않아도 된다
(이모씨의 도움을 받았다)

0개의 댓글