ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바] 백준 1269번 문제풀이
    개발/코테문제풀이 2023. 6. 3. 14:05
    728x90


    문제이해

     

    A,B의 값을 정수로 입력받는다.

    입력받은값은 A집합 B집합의 요소의 갯수가 된다.

     

    A집합이 문제에서 1,2,4

    B집합이 2,3,4,5,6 라고 할때

     

    (A-B)+(B-A) = 정답 이 된다.

     

    (A-B)

    즉 1,2,4 에서 2,3,4,5,6 을 빼면 B집합요소중 A집합에 포함된 요소를 뺀 1. 1개

     

    (B-A)

    2,3,4,5,6에서 1,2,4를 뺀 3,5,6  3개

     

    1+3 =4가 정답이 된다.

     


    풀이코드

    /*  백준 1269번 문제풀이)

        자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오.
        두 집합 A와 B가 있을 때, (A-B)와 (B-A)의 합집합을 A와 B의 대칭 차집합이라고 한다.
        예를 들어, A = { 1, 2, 4 } 이고, B = { 2, 3, 4, 5, 6 } 라고 할 때,  A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다.

        입력)

        첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다.
        둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어진다.
        각 집합의 원소의 개수는 200,000을 넘지 않으며, 모든 원소의 값은 100,000,000을 넘지 않는다.

        출력)
        첫째 줄에 대칭 차집합의 원소의 개수를 출력한다.

     *
     */
    package test_0603;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.HashSet;

    public class test_0603_2 {
        public static void main(String[] args)throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("A와 B값 입력");
            String [] Input = br.readLine().split(" ");
            int A = Integer.parseInt(Input[0]);
            int B = Integer.parseInt(Input[1]);

            HashSet <Integer> A_list = new HashSet<>();
            HashSet <Integer> B_list = new HashSet<>();

            String [] a_ele = br.readLine().split(" ");
            for(String a : a_ele){
                System.out.println("A요소입력");
                int num = Integer.parseInt(a);
                A_list.add(num);
            }

            String [] b_ale = br.readLine().split(" ");
            for(String b : b_ale){
                System.out.println("B요소입력");
                int num2 = Integer.parseInt(b);
                B_list.add(num2);
            }

            HashSet <Integer> res = new HashSet<>(A_list);
            res.addAll(B_list);
           
            for(int n1 : A_list){
                if(B_list.contains(n1)){
                    res.remove(n1);
                }
            }

            int result = res.size();
            System.out.print(result);
        }
    }

     

    A와 B를 입력받고,

    각요소를 담을 HashSet을 만들었다.

    각요소들을 만들어둔 set객체에 담아주고

     

    res라는 HashSet객체를 하나 더 만들어,

    A_list요소와 B_list요소 모두를 담아주었다.

     

    반복문을 통해

    B_list집합에 A_list요소가 포함되어있다면 전체 요소가 담긴 res객체에서 remove 함수를 통해 제거해주었다.

     

    마지막으로 result를 생성해 res객체의 size = 갯수를 저장해주고

    출력해주었다.


     

    결과

     

    728x90

    댓글

Designed by Tistory.