์์ฐ์๋ฅผ ์์๋ก ๊ฐ๋ ๊ณต์งํฉ์ด ์๋ ๋ ์งํฉ 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์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋์นญ ์ฐจ์งํฉ์ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ก ํด์, ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ํด์.contains(๋ฐฐ์ด)์ ํจ
๐ก A+B์์ ๊ณตํต์ ์ธ ๋ถ๋ถ์ 2๋ฐฐํ ํ ๋นผ์ฃผ๋ฉด ๋จ
1) ํด์, ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ํด์.contains(๋ฐฐ์ด)์ ํจ
for(int i=0; i<m; i++) {
if(A.contains(B[i]))
count++;
}
2) A+B์์ ๊ณตํต์ ์ธ ๋ถ๋ถ์ 2๋ฐฐํ ํ ๋นผ์ฃผ๋ฉด ๋จ
System.out.println(n+m-2*count);
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Hash_5 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
int n = Integer.parseInt(s[0]);
int m = Integer.parseInt(s[1]);
HashSet<Integer> A = new HashSet<>();
s = br.readLine().split(" ");
for(int i=0; i<n; i++)
A.add(Integer.parseInt(s[i]));
int[] B = new int[m+1];
s = br.readLine().split(" ");
for(int i=0; i<m; i++)
B[i] = Integer.parseInt(s[i]);
int count = 0;
for(int i=0; i<m; i++) {
if(A.contains(B[i]))
count++;
}
System.out.println(n+m-2*count);
}
}
์ฑ๊ณตโจ