백준 2776번 - 암기왕

thang_velog·2022년 7월 26일
0

https://www.acmicpc.net/problem/2776

  • HashSet과 HashMap을 이용하여 풀 수 있는 문제
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 T = Integer.parseInt(br.readLine());

        int note1;
        int note2;
// HashSet 사용
        for (int i = 0; i < T; i++) {
            int n = Integer.parseInt(br.readLine());
            StringTokenizer st = new StringTokenizer(br.readLine());

            Set<Integer> set = new HashSet<>();
            for (int j = 0; j < n; j++) {
                note1 = Integer.parseInt(st.nextToken());
                set.add(note1);
            }

            int m = Integer.parseInt(br.readLine());
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < m; j++) {
                note2 = Integer.parseInt(st.nextToken());
                if (set.contains(note2)) {
                    bw.write("1\n");
                } else {
                    bw.write("0\n");
                }
            }
        }
        bw.flush();
        bw.close();
        br.close();
    }
  • HashSet을 사용하여 풀이한 코드
    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 T = Integer.parseInt(br.readLine());

        int note1;
        int note2;
// HashMap 사용
        for (int i = 0; i < T; i++) {
            Map<Integer, Integer> map = new HashMap();

            int n = Integer.parseInt(br.readLine());
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int j = 0; j < n; j++) {
                note1 = Integer.parseInt(st.nextToken());
                map.put(note1, note1);
            }

            int m = Integer.parseInt(br.readLine());
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < m; j++) {
                note2 = Integer.parseInt(st.nextToken());
                if (map.containsKey(note2)) {
                    bw.write("1\n");
                } else {
                    bw.write("0\n");
                }
            }

        }

        bw.flush();
        bw.close();
        br.close();
    }
  • HashMap을 사용하여 풀이한 코드

HashMap보다는 Set을 이용한 풀이가 속도가 좀 더 우수했다.

0개의 댓글