[Eric's 백준] 1269번 - 대칭 차집합 - Java

Eric·2023년 2월 1일
0

BoJ(백준)

목록 보기
6/6

문제

풀이

안녕하세요! Eric 입니다!

오늘 풀어볼 문제는

백준 1269 번 대칭 차집합 이라는 문제입니다.

저는 해당 문제를 HashMap 하나만 사용 해서 풀어보았습니다.

우선 집합 A를 HashMap 에 넣었습니다.

그리고 집합 B와 비교하면서 중복되는 개수를 count 했습니다. (int intersection )

그리고 정답으로는

집합 A의 원소 개수 + 집합 B의 원소의 개수 - 2 * 중복 원소 개수

를 하였습니다.

왜냐하면, 결국에 차집합의 개수는

하단의 사진처럼 적용 할 수 있기 때문입니다.

풀이 그림

코드

import java.io.*;
import java.util.HashMap;
import java.util.StringTokenizer;

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

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

        HashMap<Integer, Integer> map = new HashMap<>();

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            map.put(Integer.parseInt(st.nextToken()), 0);
        }
        st = new StringTokenizer(br.readLine());
        int intersection = 0;
        for (int i = 0; i < m; i++) {
            int tmp = Integer.parseInt(st.nextToken());
            if (map.containsKey(tmp)) intersection++;
        }
        int answer = n + m - 2 * intersection;
        bw.write(String.valueOf(answer));
        bw.flush();
        bw.close();
        br.close();
    }
}

profile
Ærlighed i små ting er ikke nogen lille ting.

0개의 댓글