1534. Count Good Triplets

TechN0·2025년 4월 29일

알고말고 알고리즘

목록 보기
19/22

문제

https://leetcode.com/problems/count-good-triplets/?envType=daily-question&envId=2025-04-14

  • arr 와 abc 가 주어짐
  • arr의 숫자중 3개(i, j, k)를 뽑아
    • 0 <= i < j < k < arr.length

    • |arr[i] - arr[j]| <= a

    • |arr[j] - arr[k]| <= b

    • |arr[i] - arr[k]| <= c

      를 만족하는 조합의 갯수를 return하는 문제


i, j, k 니까 3중 for문을 쓰면 될듯 근데 타임오바 안나려나

코드

class Solution(object):
    def countGoodTriplets(self, arr, a, b, c):
        count = 0
        n = len(arr)
        for i in range(n):
            for j in range(i + 1, n):
                if abs(arr[i] - arr[j]) <= a:
                    for k in range(j + 1, n):
                        if abs(arr[j] - arr[k]) <= b and abs(arr[i] - arr[k]) <= c:
                            count += 1
        return count

억지 함수화

class Solution(object):
    def countGoodTriplets(self, arr, a, b, c):
        def check_good(arr, x, y, z):
            if abs(arr[x] - arr[y]) <= z:
                return True
            else:
                return False
        # ----------------------------------------- 
        count = 0
        arr_len = len(arr)

        for i in range(arr_len):
            # print(i)
            for j in range(i + 1, arr_len):
                # print('-', j)
                if check_good(arr, i, j, a) == True and i < j:
                    for k in range(j + 1, arr_len):
                        # print(arr[i], arr[j], arr[k])
                        if check_good(arr, j, k, b) == True and check_good(arr, i, k, c) == True and j < k:
                            count += 1
        return count
        

0개의 댓글