9. [Java] 배열의 유사도(배열, Set)
https://school.programmers.co.kr/learn/courses/30/lessons/120903
Set 을 활용한 코드
import java.util.*;
class Solution {
public int solution(String[] s1, String[] s2) {
Set<String> set = new HashSet<>(Arrays.asList(s1));
int cnt = 0;
for (String str : s2) {
if (set.contains(str)) cnt++;
}
return cnt;
}
}
✅ Set<String> set = new HashSet<>(Arrays.asList(s1));
- Set은 중복을 허용하지 않고, 검색 속도가 빠르기 때문에 비교 대상인 s1을 Set으로 변환하면 s2의 각 원소가 포함되어 있는지 빠르게 확인할 수 있다.
이중 for문(반복문)을 사용한 코드
class Solution {
public int solution(String[] s1, String[] s2) {
int cnt = 0;
for (int i = 0; i < s1.length; i++) {
for (int j = 0; j < s2.length; j++) {
if (s1[i].equals(s2[j])) {
cnt++;
break;
}
}
}
return cnt;
}
}
- 중복 카운팅을 피하려면 break;를 해야 한다.
- 문자열끼리 내용 비교는 .equals() 메서드를 사용해야 한다 ( == 은 주소값 비교)