[C언어 코드업 문제풀이] CodeUp 1568 : [기초-함수작성] 함수로 배열의 최대값 위치 리턴하기

코드업 1568번 함수로 배열의 최대값 위치 리턴하기 문제 풀이 해답입니다.

 

1. 문제 설명

 

배열의 참조 범위([a, b], a번부터 ~ b번까지 범위, 폐구간 [a, b])를 입력 받아 
그 범위에서 가장 큰 값이 가장 처음 나타난 위치를 출력하시오.

단, 함수형 문제이므로 함수 maxi()만 작성하여 제출하시오.

예를 들어 1 ~ n번으로 구성된 배열 
5 1 4 3 2 에서 
폐구간 [2, 4]에서 가장 큰 값이 가장 처음 나타난 위치를 계산하면 3(값 4)가 된다.


[함수형 문제란??]
함수형 문제는 기본적인 main() 등은 미리 작성되어 있습니다.
미리 작성되어 있는 프로그램은 다음과 같습니다.

미리 작성된 프로그램을 복사해 붙여 넣은 후 함수 부분을 설계하여 작성해 넣고,
테스트 한 후, 함수 부분만 제출하세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int n, a, b, d[1010];
// 이 부분에 들어가야 될 코드를 작성하여 제출
int main()
{
  scanf("%d"&n);
 
  for(int i=1; i<=n; i++)
    scanf("%d"&d[i]);
 
  scanf("%d%d"&a, &b);
 
  printf("%d\n", maxi(a, b));
}

 

2. 입력

 

첫 줄에 데이터의 개수(n)가 입력된다.
두 번째 줄에 n개의 데이터(ki)가 공백을 두고 입력된다.
세 번째 줄에 최대값 찾기를 수행할 구간의 시작 번호와 마지막 번호가 공백을 두고 입력된다.
(1 <= a <= b <= n <= 1000)
(-2147483648 <= ki <= 2147483647)

 

3. 출력

 

입력된 데이터 배열의 [a, b] 구간에서 최대값이 처음 나타나는 위치를 출력한다.

 

4. 입력 예시

 

5 1

5 4 3 2

3 5

 

5. 출력 예시

 

3

 

6. 문제 풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
int n, a, b, d[1010];
int maxi(int a, int b) {
    int index = a;
    int ki = d[a];
    for (int i = a; i <= b; i++) {
        if (d[i] > ki) {
            index = i;
            ki = d[i];
        }
    }
    return index;
}
int main()
{
  scanf("%d"&n);
 
  for(int i=1; i<=n; i++)
    scanf("%d"&d[i]);
 
  scanf("%d%d"&a, &b);
 
  printf("%d\n", maxi(a, b));
}
 

 

댓글()