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 |