백준
백준 10816 숫자 카드 2(Java)
Park DJ
2023. 1. 25. 19:41
https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
해석 및 팁
이 문제를 풀 때 배열과 for 문을 통해서도 답을 구할 수 있지만 시간초과가 발생합니다. 따라서 HashMap을 통해 카드번호를 key값으로 담고 갯수를 value로 담아서 key값이 있다면 value를, 없다면 0을 StringBuilder에 더해서 출력하면 됩니다.
Java 코드
import java.util.Scanner;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int n = sc.nextInt();
for(int i = 0; i < n; i++) {
int a = sc.nextInt();
if(map.containsKey(a)) map.put(a, map.get(a) + 1);
else map.put(a, 1);
}
int m = sc.nextInt();
for(int i = 0; i < m; i++) {
int b = sc.nextInt();
if(map.containsKey(b)) sb.append(map.get(b)+" ");
else sb.append(0+" ");
}
System.out.println(sb);
}
}