[Algorithm] ๐ŸŽจ๋ฐฑ์ค€ 1269 ๋Œ€์นญ ์ฐจ์ง‘ํ•ฉ

HaJingJingยท2021๋…„ 6์›” 5์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
60/119

0. ๋ฌธ์ œ

์ž์—ฐ์ˆ˜๋ฅผ ์›์†Œ๋กœ ๊ฐ–๋Š” ๊ณต์ง‘ํ•ฉ์ด ์•„๋‹Œ ๋‘ ์ง‘ํ•ฉ 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์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ๋Œ€์นญ ์ฐจ์ง‘ํ•ฉ์˜ ์›์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

1. ์•„์ด๋””์–ด

๐Ÿ’ก ํ•ด์‹œ, ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์‹œ.contains(๋ฐฐ์—ด)์„ ํ•จ
๐Ÿ’ก A+B์—์„œ ๊ณตํ†ต์ ์ธ ๋ถ€๋ถ„์„ 2๋ฐฐํ•œ ํ›„ ๋นผ์ฃผ๋ฉด ๋จ

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);

3. ์ฝ”๋“œ

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);
	}

}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€