본문 바로가기

CodingTEST

[백준 10816] 숫자 카드 2 (JAVA)

반응형

백준 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();
    }
}
반응형

'CodingTEST' 카테고리의 다른 글

[백준 10845] 큐 (JAVA)  (0) 2023.11.30
[백준 10828] 스택 (JAVA)  (0) 2023.11.30
[백준 9012] 괄호 (JAVA)  (0) 2023.11.30
[백준 11866] 요세푸스 문제 (JAVA)  (1) 2023.11.30
[백준 11650] 좌표 정렬하기 (JAVA)  (0) 2023.11.30