백준 10816번 (HashMap) 다시 ! (.getOrDefault()) 메서드

김경욱·2025년 9월 11일

백준

목록 보기
76/121

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.*;

import static java.util.Collections.*;

public class Main {
public static void main(String[] args) throws IOException {

   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

 int N = Integer.parseInt(br.readLine());

 StringTokenizer st = new StringTokenizer(br.readLine());

HashMap<Integer,Integer> hashs = new HashMap<>();

int[] input = new int[N];

for (int i = 0 ; i < N; i++)
{
    input[i] = Integer.parseInt(st.nextToken());
    hashs.put(input[i],hashs.getOrDefault(input[i],0)+1);
}




int M = Integer.parseInt(br.readLine());

StringTokenizer st2 = new StringTokenizer(br.readLine());

int[] input2 = new int[M];


for (int i = 0 ; i< M; i++)
{
    input2[i] = Integer.parseInt(st2.nextToken());

}

StringBuilder sb = new StringBuilder();

for (int i = 0 ; i < M; i++)
{
    sb.append(hashs.getOrDefault(input2[i],0)).append(" ");

}
    System.out.println(sb);









}
}

HashMap을 이용하여 첫번째에는 값을 나타내고 두번째에는 그 값이 나온 빈도수를 구하는 문제였다. 여기서 key Point는 .getOrDefault()메서드였다. 여기서 그 값이 안 나오면 0을 넣고 그 다음에 그 값이 나오면 그 값에 +1을 하는 구조이다. 어려웠던 문제였다. 다시 풀어보면 좋을 것 같다.

0개의 댓글