#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을 추가한 값을 리턴하면, 가장 큰 값이 최초로 나타나는 위치를 구할 수 있다.
'알고리즘 > 코드업' 카테고리의 다른 글
[코드업]1916 : (재귀함수) 피보나치 수열 (Large) | C (0) | 2022.04.13 |
---|---|
[코드업]1566 : [기초-함수작성] 함수로 거듭제곱 리턴하기 | C (0) | 2022.04.13 |
[코드업]1555 : [기초-함수작성] 함수로 n까지의 합 리턴하기 | C (0) | 2022.04.13 |
[코드업]3733 : 우박수 길이 (3n+1) (large) | C (0) | 2022.04.12 |