[LeetCode] Count Good Triplets

아르당·2026년 5월 22일

LeetCode

목록 보기
322/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

정수 배열 arr과 세개의 정수 a, b, c가 주어진다. 좋은 세쌍둥이의 개수를 찾아야 한다.

세쌍둥이(arr[i], arr[j], arr[k])가 다음 조건을 만족한다면 good이다.

  • 0 <= i < j < k < arr.length
  • |arr[i] - arr[j]| <= a
  • |arr[j] - arr[k]| <= b
  • |arr[i] - arr[k]| <= c

|x|는 절대값 x를 나타낸다.

좋은 세쌍둥이의 개수를 반환해라.

Example

#1
Input: arr = [3, 0, 1, 1, 9, 7], a = 7, b = 2, c = 3
Output: 4
Explanation: [(3, 0, 1), (3, 0, 1), (3, 1, 1), (0, 1, 1)] 네개의 좋은 세쌍둥이가 있다.

#2
Input: arr = [1, 1, 2, 2, 3], a = 0, b = 0, c = 1
Output: 0
Explanation: 모든 조건을 만족하는 세쌍둥이가 없다.

Constraints

  • 3 <= arr.length <= 100
  • 0 <= arr[i] <= 1000
  • 0 <= a, b, c <= 1000

Solved

class Solution {
    public int countGoodTriplets(int[] arr, int a, int b, int c) {
        int good = 0;
        int n = arr.length;

        for(int i = 0; i < n; i++){
            for(int j = i + 1; j < n; j++){
                if(Math.abs(arr[i] - arr[j]) <= a){
                    for(int k = j + 1; k < n; k++){
                        if(
                            Math.abs(arr[j] - arr[k]) <= b &&
                            Math.abs(arr[i] - arr[k]) <= c
                        ){
                            good++;
                        }
                    }
                }
            }
        }

        return good;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글