Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 2776번] 암기왕 - Java //Wello Horld//

koucop 2020. 3. 2. 15:52

 

 

이번에는 BOJ의 2776번 문제 "암기왕" 을 풀어보도록 하자

입력으로 맨처음에 테스트 개수 T가 주어지고,
그 다음 줄부터 '수첩 1' 에 적어놓은 정수의 개수 N 이 입력으로 들어오고, 그 다음 줄에 '수첩1'에 적혀있는 정수들 N개가 주어진다.
그 다음 줄에는 '수첩 2'에 적어놓은 정수의 개수 M 이 입력으로 들어오고, 그 다음 줄에 '수첩2'에 적혀있는 정수들 M개가 주어진다.

출력으로 '수첩2'에 적혀있는 M개의 숫자 순서대로, '수첩1'에 있으면 1을, 없으면 0을 출력하면 되는 문제이다.

성공한 코드는 아래와 같다.

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

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());
        for (int i = 0; i < T; i++) {
            int N = Integer.parseInt(br.readLine());
            HashMap<Integer, Boolean> map = new HashMap<Integer, Boolean>();
            StringTokenizer st = new StringTokenizer(br.readLine());
            for(int j = 0; j < N; j++){
                map.put(Integer.parseInt(st.nextToken()), true);
            }
            int M = Integer.parseInt(br.readLine());
            st = new StringTokenizer(br.readLine());
            for(int j = 0; j < M; j++){
                if(map.containsKey(Integer.parseInt(st.nextToken()))){
                    bw.write("1\n");
                }else {
                    bw.write("0\n");
                }
            }
        }

        bw.flush();
        br.close();
        bw.close();
    }
}

 

 

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

 

2776번: 암기왕

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, 연종이 하루 동안 본 정수들을 모두 ‘수첩1’에 적어 놓았다. 그것을 바탕으로 그가 진짜 암기왕인지 알아보기 위해, 동규는 연종에게 M개의 질문을 던졌다. 질문의 내용은 “X라는 정수를 오늘 본 적이 있는가?” 이다. 연종은 막힘없이 모두 대답을 했고, 동규는 연종

www.acmicpc.net

 

혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요.