1. 배열의 유사도
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(s1, s2) {
let result = 0;
for(let i = 0; i < s1.length; i++) {
for(let j = 0; j < s2.length; j++) {
if(s1[i] === s2[j]) {
result += 1
}
}
}
return result;
}
- 함수는 초기에 결과 변수인 result를 0으로 초기화합니다.
- 그런 다음 첫 번째 문자열 s1의 모든 문자에 대해 두 번째 문자열 s2의 모든 문자와 비교합니다.
- 외부 for 루프에서는 s1의 각 문자에 접근하기 위해 변수 i를 사용합니다.
- 내부 for 루프에서는 s2의 각 문자에 접근하기 위해 변수 j를 사용합니다.
- 이중 for 루프를 사용하여 s1과 s2의 모든 문자 쌍을 비교하면서, 두 문자가 같으면 result 변수를 1씩 증가시킵니다.
- 즉, s1[i]와 s2[j]가 동일한 경우에만 result가 1씩 증가합니다.
- 두 문자열의 모든 문자 쌍에 대해 비교가 완료되면, result 변수에는 s1과 s2에서 공통으로 포함된 문자의 총 개수가 저장됩니다.
- 마지막으로, 함수는 result 값을 반환합니다.
- 이 함수의 시간 복잡도는 O(n * m)이며, 여기서 n은 s1의 길이이고 m은 s2의 길이입니다.
- 이는 두 문자열의 길이에 비례하여 비교 연산이 수행되기 때문에 입력 크기에 따라 선형적으로 증가합니다.
2. 숫자 찾기
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
function solution(num, k) {
let a = String(num).indexOf(String(k));
return (a === -1 ? a : a + 1);
}
- 먼저, num을 문자열로 변환하기 위해 String(num)을 사용합니다. 이렇게 함으로써 num을 문자열로 다룰 수 있습니다.
- 다음으로, indexOf() 메서드를 사용하여 문자열에서 k가 처음으로 나타나는 인덱스를 찾습니다.
- indexOf()는 주어진 요소가 문자열 내에서 처음으로 등장하는 인덱스를 반환하며, 요소를 찾지 못한 경우 -1을 반환합니다.
- 따라서 String(num).indexOf(String(k))는 num의 문자열 표현에서 k가 처음으로 나타나는 인덱스를 찾습니다.
- 마지막으로, a와 -1을 비교하여 결과를 반환합니다. a가 -1인 경우, 즉 k가 숫자 num 안에 존재하지 않는 경우, -1을 반환합니다.
- 그렇지 않은 경우, a + 1을 반환합니다.
- 이는 찾은 인덱스에 1을 더하는 것으로, 인덱스가 0부터 시작하는 언어에서 1부터 시작하는 인덱스를 표현하기 위한 보정입니다.
3. n의 배수 고르기
정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
function solution(n, numlist) {
let arrayList = [];
for (let num of numlist) {
if (num % n === 0) {
arrayList.push(num);
}
}
let answer = arrayList;
return answer;
}
- 먼저, 빈 배열 arrayList을 생성합니다. 이 배열은 추출한 정수들을 저장하기 위한 용도로 사용됩니다.
- 그런 다음, numlist 배열의 각 요소 num에 대해 반복문을 실행합니다.
- 반복문을 통해 배열의 모든 요소를 확인하면서 num이 n으로 나누어 떨어지는지 검사합니다.
- num % n === 0을 사용하여 num이 n으로 나누어 떨어지는지 확인하고, 나누어 떨어진다면 arrayList에 num을 추가합니다.
- 반복문이 완료되면 arrayList에는 n으로 나누어 떨어지는 정수들이 저장되어 있습니다.
- 그리고 이 배열을 그대로 answer에 할당하고 반환합니다.
- 따라서 이 함수는 주어진 배열 numlist에서 n으로 나누어 떨어지는 정수들을 추출하여 반환합니다.
끝!!