문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
입출력 예
나의 풀이
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
for(int i = 0; i < s1.length; i++){
for(int j = 0; j < s2.length; j++){
if(s1[i].equals(s2[j])){
answer++;
}
}
}
return answer;
}
}
참고 풀이 1 (Set, .asList(), .stream())
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();
}
}
참고 풀이 2 (.stream)
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public int solution(String[] s1, String[] s2) {
return (int) Arrays.stream(s1).map(s -> Arrays.stream(s2).collect(Collectors.toList()).contains(s)).filter(b -> b).count();
}
}
참고 풀이 3 (향상된 for문)
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;
}
}
나의 풀이
function solution(s1, s2) {
var answer = 0;
for(var i = 0; i < s1.length; i++){
for(var j = 0; j < s2.length; j++){
if(s1[i] === (s2[j])){
answer++;
}
}
}
return answer;
}
참고 풀이 1 (.filter(), .includes())
function solution(s1, s2) {
const intersection = s1.filter((x) => s2.includes(x));
return intersection.length;
}
참고 풀이 2 (향상된 for문)
function solution(s1, s2) {
let count = 0;
for (let v of s1) if (s2.includes(v)) count++;
return count;
}