[알고리즘문제풀기] 배열의 유사도

silver's avatar
Nov 12, 2025
[알고리즘문제풀기] 배열의 유사도

문제

내가 작성한

오답

Arrays.asList()가 반환하는 리스트가 고정 크기(fixed-size) 리스트라서 원소 삭제 연산(= 구조 변경)을 할 수 없기 때문에 예외가 발생하므로 변경 가능한 리스트(ArrayList)로 한 번 감싸줘야 한다.
notion image
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

silver