문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
정수형 배열 a가 주어질 때, 아래 조건이 맞다면 세 쌍의 정수(a[i], a[j], a[k])는 아름다운 쌍이다.
요소가 증가하는 정수형 배열과 d의 값이 주어 졌을 때, 배열에서 아름다운 쌍의 개수를 구해라.
arr = [2, 2, 3, 4, 5]
d = 1
[i, j, k] = [0, 2, 3], [1, 2, 3], [2, 3, 4]의 인덱스인 세 개의 아름다운 쌍이 있다. 첫 번째 쌍으로 테스트하면 arr[j] - arr[i] = 3 - 2 = 1과 arr[k] - arr[j] = 4 - 3 = 1이 된다.
beautifulTriplets 함수를 완성해라.
beautifulTriplets 함수는 아래와 같은 매개변수를 가지고 있다.
연속된 세 정수의 쌍이 아니라 순서만 맞는 세 정수의 쌍을 찾으면 된다. 3번의 반복문을 사용하고 마지막 반복문은 조건에 맞으면 실행한다. 아주 비효율적인 방법의 풀이다.
먼저 아름다운 쌍의 수를 담을 count 변수를 선언하고 0을 할당한다.
int count = 0;
그리고 i에 대한 반복문, j에 대한 반복문 그리고 k에 대한 반복문은 arr[j] - arr[i] == d이면 실행해준다. arr[k] - arr[j] == d이면 count를 증가시킨다.
for(int i = 0; i < arr.size() - 2; i++){
for(int j = i + 1; j < arr.size() - 1; j++){
if(arr.get(j) - arr.get(i) == d){
for(int k = j + 1; k < arr.size(); k++){
if(arr.get(k) - arr.get(j) == d){
count++;
}
}
}
}
}
마지막으로 count를 반환한다.
return count;
public static int beautifulTriplets(int d, List<Integer> arr) {
int count = 0;
for(int i = 0; i < arr.size() - 2; i++){
for(int j = i + 1; j < arr.size() - 1; j++){
if(arr.get(j) - arr.get(i) == d){
for(int k = j + 1; k < arr.size(); k++){
if(arr.get(k) - arr.get(j) == d){
count++;
}
}
}
}
}
return count;
}