배열의 유사도

반즈·2023년 11월 22일

프로그래머스 입문

목록 보기
15/51

문제 설명

두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 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;
}
profile
나를 채우다

0개의 댓글