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

배열의 비토닉성(Bitonicity)을 계산하는 C++ 프로그램

정수형 배열이 주어졌을 때, 함수를 활용하여 해당 배열의 비토닉성(Bitonicity)을 계산하는 것이 목표입니다.

배열의 비토닉성이란?

배열의 비토닉성은 다음 규칙에 따라 정의됩니다.

  • 초기값은 0으로 설정합니다.
  • 다음 요소가 이전 요소보다 크면 1씩 증가시킵니다.
  • 다음 요소가 이전 요소보다 작으면 1씩 감소시킵니다.

예시

입력: arr[] = { 1,4,3,5,2,9,10,11}
출력: 배열의 비토닉성 : 3

동작 설명

  • 비토닉성을 계산할 변수 temp를 0으로 초기화합니다.
  • 배열의 첫 번째 요소부터 시작해 arr[i]와 arr[i-1]을 차례로 비교합니다. 예를 들어 4와 1을 비교하면 4가 더 크므로 temp를 1 증가시키고, 이어서 4와 3을 비교하면 3이 더 작으므로 temp를 1 감소시킵니다.
  • 모든 요소를 순회한 뒤 최종 temp 값인 3을 출력합니다.

접근 방법

  • 크기가 n인 배열 arr[n]의 모든 요소를 처음부터 끝까지 순회합니다.
  • arr[i] > arr[i-1]이면 bitonicity = bitonicity + 1
  • arr[i] < arr[i-1]이면 bitonicity = bitonicity - 1
  • arr[i] = arr[i-1]이면 bitonicity는 변하지 않습니다.

알고리즘

시작
1단계 → 배열의 비토닉성을 계산하는 함수 선언
    int cal_bitonicity(int arr[], int n)
        int temp = 0 으로 설정
        반복문: int i = 1; i < n; i++
            IF (arr[i] > arr[i - 1])
                temp++ (증가)
            End
            ELSE IF (arr[i] < arr[i - 1])
                temp-- (감소)
            End
        return temp
2단계 → main() 함수에서
    int arr[] = { 1,4,3,5,2,9,10,11} 선언
    int n = sizeof(arr) / sizeof(arr[0]) 설정
    cal_bitonicity(arr, n) 호출
종료

C++ 코드 구현

#include <iostream>
using namespace std;
// 배열의 비토닉성 계산
int cal_bitonicity(int arr[], int n) {
    int temp = 0;
    for (int i = 1; i < n; i++) {
        if (arr[i] > arr[i - 1])
            temp++;
        else if (arr[i] < arr[i - 1])
            temp--;
    }
    return temp;
}
int main() {
    int arr[] = { 1,4,3,5,2,9,10,11};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout<<"배열의 비토닉성 : "<<cal_bitonicity(arr, n);
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

배열의 비토닉성 : 3

시간 복잡도

이 알고리즘은 배열을 한 번만 순회하므로 시간 복잡도는 O(n)이며, 별도의 추가 메모리 없이 상수 공간 O(1)만 사용하므로 매우 효율적입니다.