본문 바로가기

JAVA 코딩테스트 참고

Map - EntrySet 사용

Map 사용하는 중에 EntrySet 은 떠오르는데 막상 사용할 방법을 몰라서 문제를 돌아서 푼 경험이 있다.

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드 

import java.util.*;

class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        HashMap<String,HashSet<String>> reportedMap = new HashMap<>();
        HashMap<String,Integer> count = new HashMap<>();
        
        for(String r : report) {
            String[] str = r.split(" ");
            String userName = str[0]; //신고한사람
            String reportName = str[1]; //신고당한 사람
            
            if(!reportedMap.containsKey(reportName)) {
                reportedMap.put(reportName,new HashSet<>());
            }
            reportedMap.get(reportName).add(userName);
        }
        
        //reportedMap 순회
        for(HashMap.Entry<String,HashSet<String>> entry : reportedMap.entrySet()) {
            System.out.println(entry.getKey());
            if(entry.getValue().size() >= k) {
                for(String name : entry.getValue()) {
                    count.put(name, count.getOrDefault(name,0)+1);
                }
            }
        }
        
        // System.out.println(count); 
        int[] answer = new int[id_list.length];
        for(int i=0; i<id_list.length; i++) {
            answer[i] = count.getOrDefault(id_list[i],0);
        }
        return answer;
    }
}

 

entrySet() 은 맵에서 key,value 쌍 즉, entry 정보를를 가져와 Set 객체로 변환한다. 
iter foreach 를 사용하여 모든 entry 정보에 접근할 수 있다.

 

entry.getKey() -> 모든 키 값

entry.getValue() -> 모든 밸류 값

for(HashMap.Entry<String,HashSet<String>> entry : reportedMap.entrySet()) {
            System.out.println(entry.getKey());
            if(entry.getValue().size() >= k) {
                for(String name : entry.getValue()) {
                    count.put(name, count.getOrDefault(name,0)+1);
                }
            }
        }

사용하는 방법은 외워두면 좋다.

 

또 하나의 방법으론 Stream API 를 사용하여 모든 Key-Value 값에 접근이 가능하다는 것이다.

이는, Stream API 사용방법을 좀 익히고 나서 정리해봐야겠다.

'JAVA 코딩테스트 참고' 카테고리의 다른 글

큐 Queue  (0) 2024.08.20
스택  (0) 2024.08.20