
간단하다. 전체 코드만 올리고 설명은 생략
1. map으로 입력받고 set에도 동시에 저장
2. 확인할 값 입력받고 해당 값 set에 있는지 확인
3. 있으면 map의 value, 없으면 0출력
import java.io.*;
import java.util.*;
public class BOJ10816 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N, M, i, key;
Map<Integer, Integer> map = new HashMap<>();
Set<Integer> set = new HashSet<>();
N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
// map이랑 set에 저장
for(i=0;i<N;i++){
key = Integer.parseInt(st.nextToken());
if(!map.containsKey(key)) { // 처음 입력받은 수 일때
map.put(key, 1);
set.add(key);
}
else
map.put(key, map.get(key) + 1);
}
M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for(i=0;i<M;i++){
key = Integer.parseInt(st.nextToken());
if(set.contains(key))
bw.write(map.get(key)+" ");
else
bw.write(0+" ");
}
bw.flush();
bw.close();
}
}
'코딩가딩가' 카테고리의 다른 글
| [JAVA]BOJ 1654, 랜선 자르기 (0) | 2024.08.01 |
|---|---|
| [JAVA]BOJ 2805, 나무 자르기 (0) | 2024.08.01 |
| [JAVA]BOJ 2470, 두 용액 (0) | 2024.07.31 |
| [JAVA]BOJ 2295, 세 수의 합 (0) | 2024.07.29 |
| [JAVA]BOJ 14425, 문자열 집합 (0) | 2024.07.28 |