https://leetcode.com/problems/count-good-triplets/?envType=daily-question&envId=2025-04-14
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