[LeetCode] Two Out of Three

준규·2022년 8월 25일
0

숫자 배열인 num1, num2, num3 배열이 주어진다고 할 때 적어도 두 배열안에 모두 있는 숫자들의 배열을 리턴하는 문제이다 이때 리턴하는 배열의 순서는 어떤 순서여도 상관 없다

Example 을 보면

적어도 두 배열에 속하는 숫자들로 이루어진 배열을 리턴하기만 하면 된다

일단 각각의 배열안에서 중복되는 숫자는 의미가 없으므로 set을 이용하여 3개의 배열을 모두 중복이 없는 배열로 만들어 주고 중복이 없는 배열들을 다시 arr 배열에 넣어서 2차원 배열로 만들어 주었다

let arr = [];
    let result = [];
    arr.push([...new Set(nums1)])
    arr.push([...new Set(nums2)])
    arr.push([...new Set(nums3)])

그 후 서브 배열들을 하나씩 선택하면서 만약 배열안에 속하면 count 를 늘려주었다

const twoOutOfThree = function(nums1, nums2, nums3) {
    let arr = [];
    let result = [];
    arr.push([...new Set(nums1)])
    arr.push([...new Set(nums2)])
    arr.push([...new Set(nums3)])
    
    for(let i =0; i < arr.length-1; i++) {
        
        for(let k =0; k < arr[i].length; k++ ) {
            let count = 1;
            for(let j=i+1; j < arr.length; j++) {
                if(arr[j].includes(arr[i][k])) {
                    count++;
                }
            }
            if(count >= 2) {
                result.push(arr[i][k])
            }
        }
    }
    return [...new Set(result)]
};

배열 순회를 끝낸 후에 3개의 배열에 모두 속한 숫자는 result 배열에 한번 더 들어가기 때문에 중복을 없앤후에 리턴을 해주었다

submit을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글