기초부터 시작하는 코딩/Programmers

Programmers 문제를 풀어봅시다. Day21

kebab00 2023. 6. 6. 20:49

728x90

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으로 나누어 떨어지는 정수들을 추출하여 반환합니다.

 

끝!!