Lv. 0 - 배열의 유사도 풀이과정
문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다.
문자열 배열 s1
과 s2
가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
s1
,s2
의 길이 ≤ 100 - 1 ≤
s1
,s2
의 원소의 길이 ≤ 10 -
s1
과s2
의 원소는 알파벳 소문자로만 이루어져 있습니다 -
s1
과s2
는 각각 중복된 원소를 갖지 않습니다.
입출력 예
s1 | s2 | result |
---|---|---|
[“a”, “b”, “c”] | [“com”, “b”, “d”, “p”, “c”] | 2 |
[“n”, “omg”] | [“m”, “dot”] | 0 |
입출력 예 설명
3-1) 입출력 예 #1
- “b”와 “c”가 같으므로 2를 return합니다.
3-2) 입출력 예 #2
- 같은 원소가 없으므로 0을 return합니다.
문제 풀이
const solution = (s1, s2) => s1.filter(item => s2.includes(item)).length;
함수 선언
- 화살표 함수를 사용하여
s1
,s2
를 매개변수로 받는다.
풀이
- 배열
s1
,s2
를 비교하여 같은 값을 가지고 있는지 판별하라해서 이전에 배웠던includes
가 생각이 났다. - 이후 배열을 비교하기위해
filter
메서드를 사용해서s1
의 배열을 순회하며s2
값에s1
값이 있으면 반환하게 적용 - 마지막으로 같은 배열이 있을 경우 갯수당 +1을 해줘야해서
filter
메서드를 통해 추출된 값의 length 구해 리턴해주었다.
결과 반환
-
s1 = ["a", "b", "c"], s2 = ["com", "b", "d", "p", "c"]
대입하면 “b”와 “c”가 같으므로 2를 리턴함 -
s1 = ["n", "omg"], s2 = ["m", "dot"]
대입하면 같은 값이 없으므로 0을 리턴함
실행
-
solution(["a", "b", "c"],["com", "b", "d", "p", "c"] )
실행하면 3 출력 -
solution(["n", "omg"],["m", "dot"])
실행하면 -2 출력
다른 사람의 풀이 참고
내가 성장한 것인가..! 알고리즘 숙제로 문제가 나왔는데, 레벨 1문제 들을 풀어서 그런지 문제를 보고 어렵다고 느껴지지 않고 자신감이 생겼었다. 그리고 코드를 완성했을 때 한 줄 코드로 성공해서 왠지 모를 뿌듯함이..!! 처음 문제를 보고 includes
와 new Set
을 생각했는데, new Set
문법이 기억이 잘 나지않아서 filter
메서드와 includes
로 작성했는데 다른사람 풀이 과정에 new Set
으로 푼 풀이과정이 있어 이것도 뿌듯했다. 앞으로도 열심히 풀어봐야겠다.
// [2명] 총합 - new SEt를 사용한 한 줄 풀이과정
function solution(s1, s2) {
const concat = [...s1, ...s2];
const setConcat = Array.from(new Set(concat));
return concat.length - setConcat.length;
}
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges