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

C++ 배열에서 인접한 연속 요소 쌍의 곱 구하기

n개의 정수로 이루어진 배열 arr[n]이 주어졌을 때, 모든 인접한 연속 요소 쌍의 곱을 구하는 것이 이 문제의 목표입니다.

여기서 '연속 요소'란 배열에서 서로 이웃한 두 요소를 의미합니다. 즉, 현재 i번째 요소 arr[i]에 있을 때 연속 요소는 바로 뒤의 arr[i+1]arr[i-1]이며, 따라서 곱은 arr[i] * arr[i+1] 또는 arr[i] * arr[i-1]이 됩니다.

예제 1

입력

arr[] = {1, 2, 3, 4}

출력

2, 6, 12

설명

쌍으로 나누면 {1,2}, {2,3}, {3,4}
각각의 결과는 1*2 = 2, 2*3 = 6, 3*4 = 12

예제 2

입력

arr[] = {9, 5, 1, 2, 6, 10}

출력

45, 5, 2, 12, 60

설명

쌍으로 나누면 {9,5}, {5,1}, {1,2}, {2,6}, {6,10}
각각의 결과는 9*5 = 45, 5*1 = 5, 1*2 = 2, 2*6 = 12, 6*10 = 60

문제 해결 접근 방법

  • 배열의 0번째 요소부터 시작하여 인덱스가 n-1보다 작을 때까지 반복문을 실행합니다.

  • 각 인덱스 i에 대해 i+1번째 요소를 확인하고, arr[i]와 arr[i+1]의 곱을 계산한 뒤 결과를 출력합니다.

알고리즘

Start
Step 1→ 연속 요소의 곱을 계산하는 함수 선언
   void product(int arr[], int size)
      int product = 1 선언
      Loop For int i = 0 and i < size – 1 and i++
         product = arr[i] * arr[i + 1] 대입
         product 출력
      End
Step 2 → main() 함수에서
   int arr[] = {2, 4, 6, 8, 10, 12, 14} 선언
   int size = sizeof(arr) / sizeof(arr[0]) 선언
   product(arr, size) 호출
Stop

C++ 구현 예제

#include <iostream>
using namespace std;
//연속된 쌍의 곱을 구하는 함수
void product(int arr[], int size){
   int product = 1;
   for (int i = 0; i < size - 1; i++){
      product = arr[i] * arr[i + 1];
      printf("%d ", product);
   }
}
int main(){
   int arr[] = {2, 4, 6, 8, 10, 12, 14 };
   int size = sizeof(arr) / sizeof(arr[0]);
   printf("product is : ");
   product(arr, size);
   return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

product is : 8 24 48 80 120 168

이처럼 배열을 한 번만 순회하면서 현재 요소와 다음 요소를 곱해 나가면 시간 복잡도 O(n)으로 모든 인접 쌍의 곱을 손쉽게 구할 수 있습니다.