이 튜토리얼에서는 C++을 사용하여 배열에서 가장 큰 요소(최댓값)를 찾는 방법을 알아보겠습니다.
배열이 하나 주어졌을 때, 우리의 목표는 배열에 포함된 여러 요소들 중에서 가장 큰 숫자를 찾아내는 것입니다.
접근 방법
가장 기본적이고 직관적인 방법은 다음과 같습니다.
1. 배열의 첫 번째 요소를 초기 최댓값으로 설정합니다.
2. 두 번째 요소부터 마지막 요소까지 배열을 순회하며 현재 최댓값과 비교합니다.
3. 더 큰 값을 발견하면 최댓값을 해당 값으로 갱신합니다.
4. 모든 요소를 확인한 후 최종 최댓값을 반환합니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
//배열에서 가장 큰 정수를 찾는 함수
int largest(int arr[], int n){
int i;
int max = arr[0]; //첫 번째 요소를 초기 최댓값으로 설정
//나머지 요소들을 순회하며 비교
for (i = 1; i < n; i++)
if (arr[i] > max)
max = arr[i];
return max;
}
int main(){
int arr[] = {10, 324, 45, 90, 9808};
int n = sizeof(arr) / sizeof(arr[0]); //배열 크기 계산
cout << "주어진 배열에서 가장 큰 값은 " << largest(arr, n);
return 0;
}실행 결과
주어진 배열에서 가장 큰 값은 9808
코드 설명
위 코드에서 largest() 함수는 배열과 배열의 크기를 매개변수로 받습니다. 먼저 첫 번째 요소를 최댓값으로 초기화한 뒤, 인덱스 1부터 시작하는 반복문을 통해 나머지 모든 요소와 비교합니다. 이 과정에서 더 큰 값을 만나면 max 변수를 갱신하고, 반복이 끝나면 최종적으로 가장 큰 값을 반환합니다.
main() 함수에서는 sizeof(arr) / sizeof(arr[0]) 연산을 사용해 배열의 전체 크기를 개별 요소 크기로 나누어 배열의 길이를 계산합니다.
시간 복잡도
이 알고리즘은 배열의 모든 요소를 한 번씩만 확인하므로 시간 복잡도는 O(n)입니다. 추가 메모리를 거의 사용하지 않으므로 공간 복잡도는 O(1)입니다.