λ³Έ λ¬Έμ λ λμ λ¬Έμμ΄μ΄ λ¬Έμμ΄ μ§ν© λ΄μ μλμ§ μΌμΌμ΄ κ²μ¬ν΄λ³΄λ μλ°μ μλ€.
μ²μμλ λ€μκ³Ό κ°μ΄ O(N*M)
μΌλ‘ νμλ€. μκ° μ νμ΄ 2μ΄μ΄κ³ ,
N
κ³Ό M
μ μ΅λκ°μ 10000
μ΄κΈ° λλ¬Έμ λ¬Έμ μμλ€.
String S = new String[N];
for (int i = 0; i < N; i++) S[i] = br.readLine();
int ans = 0;
for (int i = 0; i < M; i++) {
String s = br.readLine();
for (int j = 0; j < N; j++) {
if (s.equals(S[j])) ans ++;
}
}
μ΄ λ λ΅μ λ§μμΌλ μκ° ν¨μ¨μ΄ μ’μ§ μμ κ² κ°μ λ€λ₯Έ μ½λλ₯Ό μ°Έκ³ νμκ³ , Java Collectionsμ HashSetμ μ΄μ©νλ©΄ μκ° λ³΅μ‘λλ₯Ό ν¬κ² μ€μΌ μ μλ€λ κ²μ μκ² λμλ€.
HashSetμ Add
, Contains
μ°μ°μ μκ° λ³΅μ‘λλ λͺ¨λ O(1) μ΄λ€.
λ°λΌμ λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μμ±νλ©΄ λ μ’μ μ½λκ° λ μ μκ² μ§ !!
HashSet<String> hs = new HashSet<>();
while (N-- > 0) hs.add(br.readLine());
int ans = 0;
for (int i = 0; i < M; i++)
if (hs.contains(br.readLine())) ans ++;
μκ° λ³΅μ‘λλ₯Ό 2648ms
μμ 424ms
λ‘ μ€μΌ μ μλ€.