leetCode 문제 풀이 1534. Count Good Triplets (JS)

devmomo·2021년 3월 15일
0

알고리즘

목록 보기
35/52
post-thumbnail

1534. Count Good Triplets

문제
정수를 원소로 갖는 배열 arr와 세 정수 a,b,c가 매개변수로 주어질 때 다음 조건을 만족하는 부분배열의 개수를 return하는 함수 만들기

조건
triplet : ( arr[i], arr[j], arr[k] )
1. 0<= i < j < k < arr.length
2. |arr[i] - arr[j]| <=a
3. |arr[j] - arr[k]| <=b
4. |arr[i] - arr[k]| <=c

가정
1. arr의 길이는 3이상 100이하
2. arr[i]는 0이상 1000이하인 정수
3. a,b,c는 0 이상 1000이하

풀이

var countGoodTriplets = function(arr, a, b, c) {
const result = [];
for ( let i = 0; i<arr.length-2; i++ ) {
    for ( let j = i+1; j<arr.length-1; j ++) {
        for ( let k = j+1; k<arr.length; k++ ) {
            const absCondition1 = Math.abs(arr[i]-arr[j])<=a;
            const absCondition2 = Math.abs(arr[j]-arr[k])<=b;
            const absCondition3 = Math.abs(arr[i]-arr[k])<=c;
            if((absCondition1 && absCondition2 && absCondition3)){
                result.push([arr[i],arr[j],arr[k]]);
            } 
        }
    }
}
return result.length;    
};

다른 풀이

var countGoodTriplets = function(array, a, b, c) {
    count = 0;
    for (let i = 0; i < array.length; i++) {
        const element = array[i];
        for (let j = i+1; j < array.length; j++) {
            const element2 = array[j];
            for (let k = j+1; k < array.length; k++) {
                const element3 = array[k];
                if (Math.abs(element - element2) <= a && Math.abs(element2 - element3) <= b && Math.abs(element - element3) <= c){
                    count++;
                }          
            }
        } 
    }
    return count;
};

느낀점
count를 선언해서 따로 배열을 담지 않아도 결과값 리턴할 수 있는 방법
알고리즘 문제는 성능 이슈 고민하면서 풀기!

profile
FE engineer

0개의 댓글