‡ 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();
    }
}