본문 바로가기
알고리즘 문제풀이

[알고리즘] 배열의 최대값 구하기

by 마스터누누 2017. 4. 18.
728x90
반응형

배열의 최대값 구하기




한동안 C를 안해서 그런지 배열이고 뭐고 다 까먹었다.

동적 배열은 물론이고 이제 기본 배열마저 다시 책을 뒤져봐야 하다니 

난 이제 거의 심각하게 망했다고 보면 될 것같다.

알고리즘 잘한다고 개발 잘하는게 아니고 개발 잘한다고 알고리즘 잘하는게 아니던데,

물론 나는 둘 다 해당사항없다.

책 다시 보면서 공부 좀 해야겠다.


이번 문제는 배열의 최대값을 구하는 문제이다.




1. 배열의 최대값


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>
 
int main() {
    int num[5= {48,26,23,5,7};
 
    printf("%d\n", max_arr(num, 5));                                                                       
 
    return 0;
}
 
int max_arr(int arr[], int arr_len) {
    int max, i;
 
    max = arr[0];
 
    for (i = 1; i < arr_len; i++) {
        if (max < arr[i])
            max = arr[i];
    }
 
    return max;
}
 
cs

 

Static array로 구성해봤다.

이미 arr_len이 정해져 있으므로 배열과 고정값을 파라미터로 넘기고 

max값을 반환했다.

따라서 main 함수보다는 max_arr 함수에 주목해한다.





2. max_arr 함수

 

1
2
3
4
5
6
7
8
9
10
11
12
13
int max_arr(int arr[], int arr_len) {                                                                      
    int max, i;
 
    max = arr[0];
 
    for (i = 1; i < arr_len; i++) {
        if (max < arr[i])
            max = arr[i];
    }
 
    return max;
}
 
cs


함수는 다음과 같다.

반환할 max를 선언 후 배열 첫째 값을 처장한다.

i는 배열의 인덱스 역할을 하며 반복문을 통해 배열이 이동되면서 

max값과 비교 연산을 실행하게된다.

반복문을 통한 비교연산은 탐색의 기본적인 방법이다. 

따라서 이와같은 기본문제를 통하여 어떤식으로 동작하는지 알아두도록 하자.


비교 연산 후 최종으로 max에 저장되는 값이 제일 큰 값이므로 

해당 값이 max에 저장, 반환된다.



반응형

댓글