Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 배열에서 인접한 연속 요소 쌍의 절대 차이 구하기

문제 개요

이 글에서는 C++ 배열에서 서로 인접한 두 요소(연속된 쌍) 사이의 절대 차이를 구하는 방법을 알아봅니다. 배열에 n개의 요소가 있다면, 결과 배열에는 n-1개의 값이 저장됩니다.

예를 들어 배열이 {8, 5, 4, 3}이라면 계산 과정은 다음과 같습니다.

  • |8 - 5| = 3
  • |5 - 4| = 1
  • |4 - 3| = 1

따라서 최종 결과 배열은 {3, 1, 1}이 됩니다.

알고리즘

pairDiff(arr, n)

begin
    res := 결과 값을 저장할 배열
    for i in range 0 to n-2, do
        res[i] := |arr[i] – arr[i+1]|
    done
end

핵심 로직은 단순합니다. 반복문을 이용해 현재 요소와 바로 다음 요소의 차이를 절댓값으로 변환한 뒤, 그 값을 결과 배열에 순서대로 저장하면 됩니다. 시간 복잡도는 O(n)으로 매우 효율적입니다.

C++ 예제 코드

#include<iostream>
#include<cmath>
using namespace std;

void pairDiff(int arr[], int res[], int n) {
    for (int i = 0; i < n-1; i++) {
        res[i] = abs(arr[i] - arr[i+1]);
    }
}

main() {
    int arr[] = {14, 20, 25, 15, 16};
    int n = sizeof(arr) / sizeof(arr[0]);
    int res[n-1];

    pairDiff(arr, res, n);

    cout << "차이 배열: ";
    for(int i = 0; i<n-1; i++) {
        cout << res[i] << " ";
    }
}

실행 결과

차이 배열: 6 5 10 1

결과 분석

입력 배열 {14, 20, 25, 15, 16}에 대해 각 인접 쌍의 절대 차이는 다음과 같이 계산됩니다.

  • |14 - 20| = 6
  • |20 - 25| = 5
  • |25 - 15| = 10
  • |15 - 16| = 1

5개의 입력 요소에 대해 4개의 차이 값이 출력되는 것을 확인할 수 있습니다. 즉, 항상 (원본 요소 수 - 1)개의 결과가 생성됩니다. 이 방식은 시계열 데이터의 변화량 분석이나 센서 데이터의 급격한 변화 감지 등 실무에서도 유용하게 활용될 수 있습니다.