[백준 10815] - 숫자 카드 - JAVA(HashMap사용)
본문 바로가기

알고리즘/백준

[백준 10815] - 숫자 카드 - JAVA(HashMap사용)

728x90
반응형

안녕하세요 놀이방사장입니다.

 

이번 포스팅은 백준 10815

"숫자카드"  포스팅입니다.

 

 

 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

 

문제설명)

조건을 보면 두 숫자에 중복된 숫자가 주어진 경우는 없다고 되어있습니다.

그리고 두번째 줄 기준으로 첫번째 줄에 있는 숫자가 있으면 1을 출력하고 없을 경우 0을 출력해주면 됩니다.

저는 HashMap을 사용했습니다.

 

package me.joyeonggyu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.StringTokenizer;


public class Main{
       public static StringBuilder sb = new StringBuilder();
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        HashMap<String, Integer> card = new HashMap<>();

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

        for(int i=0; i<n; i++){
            card.put(st.nextToken(), 0);
        }

        int n2 = Integer.parseInt(br.readLine());
        st = new StringTokenizer(br.readLine());
        for(int j=0; j<n2; j++){
            if(card.get(st.nextToken()) != null){
                sb.append("1"+" ");
            }else{
                sb.append("0"+" ");
            }
        }
        bw.write(sb.toString());
        bw.flush();
        bw.close();
    }
}

 

 

이렇게 풀어주면 됩니다.

 

저는 처음에 list.contains()로 풀었는데 시간초과가 나더라구요 그래서 hashMap방법이 더 좋은 거 같습니다.

반응형