‡ CODING TEST STUDY ‡/º 백준
[백준 | Java Silver IV] (#10816) 숫자 카드 2
Trudy | 송연
2024. 7. 23. 03:41
문제
https://www.acmicpc.net/problem/10816
접근
https://xoxoxoxox.tistory.com/314
[백준 | Java Silver IV] (#1920) 수 찾기
문제https://www.acmicpc.net/problem/1920접근ArrayList를 사용하면 시간 초과가 뜨고, HashSet을 이용해서 빠르게 탐색해야 통과 됐던 문제이다. 첫번째 제출 - ArrayList 사용, 시간 초과package week12.baek.july23.
xoxoxoxox.tistory.com
위 문제와 매우 유사했다!
대신 다른 것은 가지고 있는 개수를 반환해야 했던 것
따라서 개수를 저장하기 위해 HashMap<Integer, Integer>를 사용해서 풀었다.
시간 초과의 문제가 있었지만, BufferedWriter로 출력을 바꿔주니 해결되고 통과 됐다.
최종 코드
package week12.baek.july23;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class S10816 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
int num = Integer.parseInt(st.nextToken());
map.put(num, map.getOrDefault(num, 0) + 1);
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for (int i = 0; i < m; i++) {
int num = Integer.parseInt(st.nextToken());
bw.write(map.getOrDefault(num, 0) + " ");
}
bw.flush();
bw.close();
}
}