코딩가딩가

[JAVA]BOJ 10816, 숫자 카드

Noooodle 2024. 7. 31. 17:07

간단하다. 전체 코드만 올리고 설명은 생략

 

1. map으로 입력받고 set에도 동시에 저장
2. 확인할 값 입력받고 해당 값 set에 있는지 확인

3. 있으면 map의 value, 없으면 0출력


import java.io.*;
import java.util.*;

public class BOJ10816 {
    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, M, i, key;
        Map<Integer, Integer> map = new HashMap<>();
        Set<Integer> set = new HashSet<>();

        N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());

        // map이랑 set에 저장
        for(i=0;i<N;i++){
            key = Integer.parseInt(st.nextToken());
            if(!map.containsKey(key)) { // 처음 입력받은 수 일때
                map.put(key, 1);
                set.add(key);
            }
            else
                map.put(key, map.get(key) + 1);
        }

        M = Integer.parseInt(br.readLine());
        st = new StringTokenizer(br.readLine());
        for(i=0;i<M;i++){
            key = Integer.parseInt(st.nextToken());
            if(set.contains(key))
                bw.write(map.get(key)+" ");
            else
                bw.write(0+" ");
        }
        bw.flush();
        bw.close();
    }
}

'코딩가딩가' 카테고리의 다른 글

[JAVA]BOJ 1654, 랜선 자르기  (0) 2024.08.01
[JAVA]BOJ 2805, 나무 자르기  (0) 2024.08.01
[JAVA]BOJ 2470, 두 용액  (0) 2024.07.31
[JAVA]BOJ 2295, 세 수의 합  (0) 2024.07.29
[JAVA]BOJ 14425, 문자열 집합  (0) 2024.07.28