1822. μ°¨μ§ν© (Silver 4)
# μλ£κ΅¬μ‘°
λͺ κ°μ μμ°μλ‘ μ΄λ£¨μ΄μ§ λ μ§ν© Aμ Bκ° μλ€. μ§ν© Aμλ μνλ©΄μ μ§ν© Bμλ μνμ§ μλ λͺ¨λ μμλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μλ μ§ν© Aμ μμμ κ°μ n(A)μ μ§ν© Bμ μμμ κ°μ n(B)κ° λΉ μΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€. (1 ≤ n(A), n(B) ≤ 500,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€μλ μ§ν© Aμ μμκ°, μ μ§Έ μ€μλ μ§ν© Bμ μμκ° λΉ μΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€. νλμ μ§ν©μ μμλ 2,147,483,647 μ΄νμ μμ°μμ΄λ©°, νλμ μ§ν©μ μνλ λͺ¨λ μμμ κ°μ λ€λ₯΄λ€.
μΆλ ₯
첫째 μ€μ μ§ν© Aμλ μνλ©΄μ μ§ν© Bμλ μνμ§ μλ μμμ κ°μλ₯Ό μΆλ ₯νλ€. λ€μ μ€μλ ꡬ체μ μΈ μμλ₯Ό λΉ μΉΈμ μ¬μ΄μ λκ³ μ¦κ°νλ μμλ‘ μΆλ ₯νλ€. μ§ν© Aμλ μνλ©΄μ μ§ν© Bμλ μνμ§ μλ μμκ° μλ€λ©΄ 첫째 μ€μ 0λ§μ μΆλ ₯νλ©΄ λλ€.
μμ μ λ ₯ 1
4 3
2 5 11 7
9 7 4
μμ μΆλ ₯ 1
3
2 5 11
μμ μ λ ₯ 2
3 5
2 5 4
1 2 3 4 5
μμ μΆλ ₯ 2
0

λ¬Έμ λ₯Ό νκΈ° μν΄ μλμΌλ‘ μ€λ¦μ°¨μ μ λ ¬μ ν΄μ£Όλ λμ λ°°μ΄μΈ TreeSetμ μ¬μ©ν΄μ€¬λ€.
κ·Έ λ€μ μ§ν© aμ μμ κ°μμ μ§ν© bμ μμ κ°μλ₯Ό μ°¨λ‘λ‘ μ λ ₯ λ°κ³ , μ λ ₯λ°μ μ§ν© aμ μμ κ°μλ§νΌ aμ μμλ₯Ό d_setμ λ΄μλ€.
μ§ν© bμ μμ κ°μλ§νΌ ν΄λΉ μμλ₯Ό μ λ ₯λ°μλλ°, ifλ¬Έκ³Ό containsλ₯Ό μ¬μ©ν΄μ λ§μ½ aμ§ν©μμ μ λ ₯λ°μ μμμ μ€λ³΅λλ κ²μ΄ μλ€λ©΄ ν΄λΉ μμλ₯Ό removeλ₯Ό μ¬μ©ν΄μ μμ ν΄μ€¬λ€.
λ§μ§λ§μΌλ‘ λ°°μ΄μ ν¬κΈ°λ₯Ό sizeλ₯Ό μ¬μ©ν΄μ μΆλ ₯ν΄μ£Όμκ³ , d_setμ μλ μμλ€μ μΆλ ₯ν΄μ£Όμλ€.
import java.util.Scanner;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num_a, num_b;
int overlap;
TreeSet<Integer> d_set = new TreeSet<Integer>();
num_a = sc.nextInt(); // μ§ν© a μμ κ°μ
num_b = sc.nextInt(); // μ§ν© b μμ κ°μ
for (int i = 0; i < num_a; i++)
d_set.add(sc.nextInt()); // a μμ d_set λ°°μ΄μ λ΄κΈ°
for (int j = 0; j < num_b; j++) {
overlap = sc.nextInt(); // μμ bμ λ΄κΈΈ μμ μ
λ ₯ λ°μ
if (d_set.contains(overlap)) { // λ§μ½ a μ§ν©κ³Ό μ€λ³΅λλ κ² μμΌλ©΄
d_set.remove(overlap); // ν΄λΉ μμ μμ
}
}
System.out.println(d_set.size()); // λ°°μ΄(μ°¨μ§ν©)μ ν¬κΈ° μΆλ ₯
for (Integer n : d_set) {
System.out.print(n + " ");
}
}
}
μλ°λ‘ λ°±μ€ λ¬Έμ λ μ²μ μ μΆν΄λ΄μ classμ΄λ¦μ MainμΌλ‘ νλ κ±Έ λͺ°λλμ§λΌ μμ² λ§μ΄ μ»΄νμΌμλ¬κ° λ¬λ€.......