알고리즘/백준

[백준 10816번] 숫자 카드 2(Java) : HashMap

이채림 2024. 11. 3. 17:06

HashMap을 사용하는 이유

👍🏻 효율적인 조회빠른 빈도 저장

  • HashMap의 get 연산은 평균적으로 O(1)이다.
  • HashMap은 각 숫자를 키(key)로, 해당 숫자의 빈도를 값(value)으로 저장한다.

 

 

 

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        Map<Integer, Integer> cardCount = new HashMap<>();

 

HashMap을 생성하여 상근이가 가진 각 숫자 카드의 빈도를 저장할 cardCount 맵을 만든다.

 

        // 상근이의 카드 입력
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            int card = Integer.parseInt(st.nextToken());
            cardCount.put(card, cardCount.getOrDefault(card, 0) + 1);
        }

 

put 메서드를 사용하여 특정 키에 값을 저장하고

이미 존재하면 새 값으로 덮어쓴다.

 

        // 찾고자 하는 카드 입력
        int M = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < M; i++) {
            int query = Integer.parseInt(st.nextToken());
            sb.append(cardCount.getOrDefault(query, 0)).append(" ");
        }

 

cardCount.getOrDefault(query, 0)를 통해

해당 숫자가 cardCount에 저장되었는지 확인한다.

 

만약 query가 cardCount에 존재하면 그 숫자 개수를 반환하고,

존재하지 않으면 0을 반환한다.

 

 

 

 

 

 

📖  정답 코드

'알고리즘 > 백준' 카테고리의 다른 글

조합  (0) 2024.11.06
/ by zero 오류  (0) 2024.11.03
[백준 11724번, 2178번, 1920번] 탐색(Java)  (4) 2024.11.02
[백준 1676번] 팩토리얼 0의 개수(Java)  (3) 2024.11.01
Deque  (0) 2024.10.30