import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class numCard {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] card = br.readLine().split(" ");
Map<Integer, Integer> cardCount = new HashMap<>();
for(int i = 0; i < N; i++ ) {
int num = Integer.parseInt(card[i]);
if(cardCount.containsKey(num)) {
cardCount.replace(num, cardCount.get(num) + 1);
}
else {
cardCount.put(num, 1);
}
}
StringBuilder answer = new StringBuilder();
int M = Integer.parseInt(br.readLine());
String[] card2 = br.readLine().split(" ");
for(int i = 0; i < M; i++) {
int num = Integer.parseInt(card2[i]);
if(cardCount.containsKey(num) ) {
answer.append(cardCount.get(num));
}
else {
answer.append(0);
}
if(i < M-1) {
answer.append(" ");
}
}
System.out.println(answer);
}
}
- 해시맵에 숫자카드의 숫자를 키, 개수를 value로 저장
-> ex. {2=1, 3=2, 6=1, 7=1, -10=2, 10=3}- 만든 해시맵의 키 중 주어진 정수와 같은 숫자가 있다면 value 값을 answer에 append
- 키 중 주어진 정수와 같은 숫자가 없다면 0 append
- 마지막을 제외하고 " " 공백도 append
String의 문자열을 변경하면 새로운 String을 만들어 낸다. StringBuilder는 인스턴스를 한 번 생성하고 나면 인스턴스가 가진 문자열 값을 변경하지 못하는 단점을 보완한 클래스이다. 즉, 같은 인스턴스 안의 문자열 필드 값을 추가하거나 변경할 수 있도록 되어있다. 원본 문자열을 바꿀 수 있는만큼 문자열을 다루는 메소드도 더 많이 포함되어 있다.