CodingTEST
[백준 10816] 숫자 카드 2 (JAVA)
경걍
2023. 11. 30. 03:55
반응형
백준 10816번 문제 - 숫자 카드 2
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0
www.acmicpc.net
문제 분석
- 상근이는 숫자 카드 N개를 가지고 있다.
- 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 출력해라.
해결 키 포인트
- TreeMap으로 입력된 숫자와 숫자에 따른 개수 구하기
- TreeMap에 숫자 M이 주어졌을 경우, containsKey(M)로 확인 후
- 포함되있을 경우, get(M) 출력
- 포함되지 않을 경우, 0 출력
코드
import java.io.*;
import java.util.StringTokenizer;
import java.util.TreeMap;
public class Main {
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 = Integer.parseInt(br.readLine());
TreeMap<Integer, Integer> treeMap = new TreeMap<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 1; i <= N; i++) {
int num = Integer.parseInt(st.nextToken());
if(treeMap.containsKey(num)) {
treeMap.put(num, treeMap.get(num)+1);
}
else {
treeMap.put(num, 1);
}
}
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for (int i = 1; i <= M; i++) {
int num = Integer.parseInt(st.nextToken());
if(treeMap.containsKey(num)){
bw.write(treeMap.get(num) + " ");
}
else {
bw.write("0 ");
}
}
bw.flush();
bw.close();
}
}
반응형