https://www.acmicpc.net/problem/10816
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class baekjoon_10816 {
public static String card(int N, long[] card, int M, long[] num) {
HashMap<Long, Integer> map = new HashMap<>();
for(long c : card) {
// map에 값이 있으면 1을 더해주고 아니라면 1로 초기화
map.put(c, map.getOrDefault(c, 0) + 1);
}
StringBuilder sb = new StringBuilder();
for(long n : num) {
sb.append(map.getOrDefault(n,0)).append(" "); // 있으면 value값 없으면 0
}
return sb.toString().trim(); // trim: 앞뒤공백제거
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 현재 카드의 수
long[] card = new long[N]; // 카드 배열
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
card[i] = Integer.parseInt(st.nextToken());
}
int M = Integer.parseInt(br.readLine());
long[] num = new long[M];
st = new StringTokenizer(br.readLine());
for(int i=0; i<M; i++) {
num[i] = Integer.parseInt(st.nextToken());
}
System.out.print(card(N, card, M, num));
br.close();
}
}
hashmap을 사용해서 현재 가지고 있는 카드 수 만큼
key에 현재 카드 숫자, value에는 key가 있으면 1을 증가시키고 없으면 1로 초기화해서 저장했다.
그리고 개수를 구해야 하는 숫자 M개만큼
현재 수가 hashmap에 있으면 value값을 없으면 0으로 append 해주었다
'코테' 카테고리의 다른 글
[Java] 백준 : 10815 - 숫자 카드 1 (0) | 2025.02.05 |
---|---|
[Java] 백준 : 1920 - 수 찾기 (1) | 2025.01.22 |
[Java] 프로그래머스 : 입국심사 (0) | 2025.01.06 |
[Java] 백준 : 18870 - 좌표 압축 (0) | 2024.12.17 |
[Java] 백준 : 2805 - 나무 자르기 (1) | 2024.12.09 |