μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

[Python] λ°±μ€€ 1269

λ‹€λΈ”πŸ’ 2022. 9. 25. 23:33

1269. λŒ€μΉ­ μ°¨μ§‘ν•© (Silver 4)

μžμ—°μˆ˜λ₯Ό μ›μ†Œλ‘œ κ°–λŠ” 곡집합이 μ•„λ‹Œ 두 μ§‘ν•© 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

3 5
1 2 4
2 3 4 5 6

예제 좜λ ₯ 1

4

 

 

 

setμ΄λΌλŠ” 파이썬 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ£Όλ©΄ μ°¨μ§‘ν•©κ³Ό κ΅μ§‘ν•©μ˜ 연산이 κ°€λŠ₯ν•˜λ‹€.

μš°μ„  첫째 쀄에 μ§‘ν•© A의 μ›μ†Œμ˜ κ°œμˆ˜μ™€ μ§‘ν•© B의 μ›μ†Œμ˜ 개수λ₯Ό split을 μ‚¬μš©ν•΄μ„œ λΉˆμΉΈμ„ 사이에 두고 μž…λ ₯λ°›μ•˜λ‹€.

κ·Έ λ‹€μŒ 각각의 집합을 setν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ μ§‘ν•© A와 B에 λͺ¨λ“  μš”μ†Œλ₯Ό λΉˆμΉΈμ„ 사이에 두고 μž…λ ₯λ°›μ•˜λ‹€. 

λ§ˆμ§€λ§‰μœΌλ‘œ -λ₯Ό μ‚¬μš©ν•΄μ„œ 두 μ§‘ν•©μ˜ μ°¨μ§‘ν•© 연산을 ν•œ ν›„ λ”ν•΄μ„œ λŒ€μΉ­ μ°¨μ§‘ν•©μ˜ μ›μ†Œμ˜ 개수λ₯Ό 좜λ ₯ν•΄μ£Όμ—ˆλ‹€.

num_a, num_b = map(int, input().split())
set_a = set(map(int, input().split()))
set_b = set(map(int, input().split()))

print(len(set_a - set_b) + len(set_b - set_a))