본문 바로가기
백준

[백준] 2776번 : 암기왕 – JAVA [자바]

by Hongwoo 2023. 7. 12.
반응형

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

 

2776번: 암기왕

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며,

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2776번 암기왕은 실버 4 난이도의 자료 구조 및 해시 문제이다. 이 문제에서는 먼저 수첩 1에 있는 정수 N개가 주어지고 그다음에 수첩 2에 있는 정수 M개가 주어진다. 이때, 수첩 2에 있는 숫자들 중에서 수첩 1에도 있으면 1을 출력하면 되고, 없으면 0을 출력하면 된다.

 

문제에서 주어진 예시를 한번 보겠다.

 

수첩 1에는 4 1 5 2 3이 있다. 그리고 수첩 2에는 1 3 7 9 5가 있다. 1과 3은 수첩 1에도 있으므로 1 1을 출력하고 7 하고 9는 수첩 1에 없으므로 0 0을 출력한다. 마지막으로 5도 수첩 1에 있으므로 1을 출력하면 된다. 따라서 1 1 0 0 1을 출력하면 된다.

 

이 문제는 HashSet을 이용하면 쉽게 풀 수 있다. 우선, 수첩 1에 있는 정수 N개를 모두 HashSet에 넣는다. 그리고 수첩 2에 있는 정수 M개를 입력받을 때, HashSet에 있으면 1을, 없으면 0을 출력하면 된다.

 

자세한 코드는 아래에 있는 코드를 참고하면 되겠다.

 


  • 코드
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int t = Integer.parseInt(br.readLine());
        for (int i = 0; i < t; i++) {
            Set<Integer> set = new HashSet<>();
            int n = Integer.parseInt(br.readLine());
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int j = 0; j < n; j++) {
                set.add(Integer.parseInt(st.nextToken()));
            }
            int m = Integer.parseInt(br.readLine());
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < m; j++) {
                if (set.contains(Integer.parseInt(st.nextToken()))) {
                    sb.append("1\n");
                } else {
                    sb.append("0\n");
                }
            }
        }
        System.out.print(sb);
    }

}

 

 

반응형

댓글