알고리즘/코드업

[코드업]1535 : [기초-함수작성] 함수로 가장 큰 값 위치 리턴하기 | C

kms0204 2022. 4. 12. 23:59
#include <stdio.h>

int n, d[110];

int f(){
    int max=d[0],index=0;
    for(int i=0;i<n;i++){
        if(max < d[i]){
            max = d[i];
            index = i;
        }
    }
    
    return ++index;
}

int main()
{
  scanf("%d", &n);

  for(int i=0; i<n; i++)
    scanf("%d", &d[i]);

  printf("%d", f());
  return 0;
}

가장 큰 값이 처음 나타나는 위치를 구하는 문제이다.

 

사용자로부터 데이터의 개수 n을 입력받는다.

n의 개수만큼 for문을 이용하여 데이터를 d라는 배열에 입력받는다.

printf("%d", f());를 이용하여 가장 큰 값이 처음 나타는 위치를 출력하는데,

저렇게 쓸 수 있는 까닭은 f()의 반환값이 int형이기 때문이다.

 

f() 설명:

반환값의 자료형은 int형이고,

매개변수는 없는,

f 라는 이름의 함수이다.

 

max라는 변수를 선언해서 d[0]의 값을 담고, index라는 변수를 선언해서 인덱스인 0을 담는다.

입력받은 n개의 데이터와 max의 값을 비교한다.

만약, max보다 큰 값이 발견된다면, max를 그 값으로(즉, d[i]로) 바꾸고, 그 값에 해당되는 인덱스를 index에 저장한다.

(max와 같은 값이 발견되어도, max보다 크진 않기 때문에 가장 큰 값이 최초로 나타나는 인덱스를 구할 수 있다.)

배열의 인덱스는 0부터 시작하므로, 1을 추가한 값을 리턴하면, 가장 큰 값이 최초로 나타나는 위치를 구할 수 있다.