문제
내가 작성한
오답
Arrays.asList()가 반환하는 리스트가 고정 크기(fixed-size) 리스트라서 원소 삭제 연산(= 구조 변경)을 할 수 없기 때문에 예외가 발생하므로 변경 가능한 리스트(ArrayList)로 한 번 감싸줘야 한다.
import java.util.*;
class Solution {
public int solution(String[] s1, String[] s2) {
List<String> list2 = Arrays.asList(s2);
List<String> list1 = Arrays.asList(s1);
list1.retainAll(list2);
return list1.size();
}
}정답
// retainAll은 컬렉션(주로 List, Set)에서 “교집합만 남기고 나머지는 전부 지우는” 메서드
class Solution {
public int solution(String[] s1, String[] s2) {
List<String> list2 = new ArrayList<>(Arrays.asList(s2));
List<String> list1 = Arrays.asList(s1);
list2.retainAll(list1);
return list2.size();
}
}
import java.util.*;
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
List<String> list = Arrays.asList(s2);
for(String s: s1){
if(list.contains(s)) answer++;
}
return answer;
}
}다른 사람들의 정답
import java.util.*;
class Solution {
public int solution(String[] s1, String[] s2) {
Set<String> set = new HashSet<>(Arrays.asList(s1));
return (int)Arrays.stream(s2).filter(set::contains).count();
}
}
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
for(String str1 : s1){
for(String str2 : s2){
if(str1.equals(str2)){
answer++;
break;
}
}
}
return answer;
}
}Share article