JAVA/Coding Test

[JAVA] 백준 1269 대칭 차집합_집합과맵

오늘도개발 2023. 3. 5. 09:29

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

 

1269번: 대칭 차집합

첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어

www.acmicpc.net

 

접근 : 

 

 - 집합 a, b 의 갯수를 입력받는다.

 

 - 집합 a 를 hashMap으로 저장하고 집합 b 는 split을 사용하여 문자열 배열 그대로 받는다.

 

 - 집합 b 의 원소를 한개씩 빼서 집합 a에 있는지 확인한다.

 

- 집합 a, b의 갯수를 더하고  중복된 수에 2를 곱해서 뺀다.

 

 

코드 구현 : 

 

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

public class Main {

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

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String[] inputs = br.readLine().split(" ");
		int n = Integer.parseInt(inputs[0]);
		int m = Integer.parseInt(inputs[1]);

		HashMap<String, Integer> a_numbers = new HashMap<>();
		inputs = br.readLine().split(" ");

		for (int i = 0; i < n; i++) {
			a_numbers.put(inputs[i], 0);
		}

		inputs = br.readLine().split(" ");

		int result = 0;

		for (int j = 0; j < m; j++) {
			if (a_numbers.containsKey(inputs[j])) {
				result++;
			}
		}
		
		result = n + m - 2*result;

		System.out.println(result);
		br.close();
	}
}

 

* map을 사용한 것과 사용하지 않은 경우 속도 비교

  - map을 사용하지 않으면 제한시간 2초를 넘긴다.