백준 10815 숫자 카드[Java]

seren-dev·2022년 8월 13일
0

백준 - 집합과 맵

목록 보기
1/5

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

접근

두 숫자 카드에 같은 수가 적혀있는 경우는 없다고 나와있으므로, 숫자를 Set에 저장한다. 그 다음 M개의 정수에 대해 contains() 함수를 사용해 가지고 있는 숫자 카드인지 아닌지를 구분한다.

나의 풀이

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));
        int n = Integer.parseInt(br.readLine());

        StringTokenizer st = new StringTokenizer(br.readLine());
        Set<Integer> set = new HashSet<>();

        for (int i = 0; i < n; i++) {
            int num = Integer.parseInt(st.nextToken());
            set.add(num);
        }

        int m = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < m; i++) {
            int num = Integer.parseInt(st.nextToken());
            if (set.contains(num)) {
                sb.append("1 ");
            }
            else
                sb.append("0 ");
        }

        System.out.println(sb.toString().trim());
    }
}

나의 풀이2

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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());

        StringTokenizer st = new StringTokenizer(br.readLine());
        Set<Integer> set = new HashSet<>();

        for (int i = 0; i < n; i++) {
            int num = Integer.parseInt(st.nextToken());
            set.add(num);
        }

        int m = Integer.parseInt(br.readLine());

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < m; i++) {
            int num = Integer.parseInt(st.nextToken());
            if (set.contains(num)) {
                bw.write("1 ");
            }
            else
                bw.write("0 ");
        }

        bw.flush();
        bw.close();
    }
}
  • BufferedWriter 사용

다른 사람의 풀이

import java.io.*;
import java.math.BigInteger;
import java.util.*;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) throws IOException {
        p10815();
    }

    private static void p10815() throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        
        bufferedReader.readLine();
        
        ArrayList<Integer> list1 = Arrays.stream(bufferedReader.readLine().split(" ")).mapToInt(Integer::parseInt).collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
        Set<Integer> map1 = new HashSet<>(list1);

        bufferedReader.readLine();
        
        ArrayList<Integer> list2 = Arrays.stream(bufferedReader.readLine().split(" ")).mapToInt(Integer::parseInt).collect(ArrayList::new, ArrayList::add, ArrayList::addAll);

        StringBuilder stringBuilder = new StringBuilder();
        
        list2.forEach(integer -> {
            if (map1.contains(integer)) {
                stringBuilder.append(1);
                stringBuilder.append(" ");
            } else {
                stringBuilder.append(0);
                stringBuilder.append(" ");
            }
        });

        System.out.println(stringBuilder.toString());
        
    }
}
  • stream을 사용하여 ArrayList 생성
    ArrayList<Integer> list1 = Arrays.stream(bufferedReader.readLine().split(" ")).mapToInt(Integer::parseInt).collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
  • forEach 문 사용

0개의 댓글