문제설명
*주의사항 : 이 (함수 제출형) 문제는 함수 부분만 작성해서 제출해야 오류 없이 채점이 됩니다.
미리 작성되어있는 코드를 읽고 해석해서, 함수 부분만 작성해서 제출하면 됩니다.
작성한 함수의 테스트를 위해서는 제시된 코드를 복사해 사용하면 되고, 제출은 함수 부분만 하세요.
------
배열에서 가장 큰 값이 처음 나타나는 위치를 출력하시오.
단, 함수형 문제이므로 함수 f()만 작성하시오.
[함수형 문제란??]
함수형 문제는 기본적인 main() 등은 미리 작성되어 있습니다.
미리 작성되어 있는 프로그램은 다음과 같습니다.
미리 작성된 프로그램을 복사해 붙여 넣은 후 함수 부분을 설계하여 작성해 넣고,
테스트 한 후, 함수 부분만 제출하세요.
#include <stdio.h>
int n, d[110];
// 이 부분에 들어가야 될 코드를 작성하여 제출
int main()
{
scanf("%d", &n);
for(int i=0; i<n; i++)
scanf("%d", &d[i]);
printf("%d", f());
return 0;
}
입력
첫 줄에 데이터의 개수 n이 입력된다.
두 번째 줄에 n개의 데이터가 공백을 두고 입력된다.
출력
가장 큰 값이 처음 나타나는 위치를 출력한다.
입력예시
5
1 3 2 1 3
출력예시
2
int f(){
int max;
int num=1;
for(int i=0;i<n;i++){
if(i==0){
max=d[i];
}
else{
if(max<d[i]){
max=d[i];
num=i+1;
}
}
}
return num;
}
이 부분만 코드업 문제에 넣으면 정답이라고 나오게 된다.
별로 어려울 것 같지 않은데 정답율이 20%대라서 한번 풀어보게 되었다. 함수에 보통 main에 넣던 것들을 넣어주면 되는 것 같다. 열혈c때 계속 함수 넣어서 익숙해진 부분이다.
일단 함수 안에서 max를 선언해주고 num도 선언해주었다. num는 1로 초기화했는데 하나만 입력되어었을 경우때문이다. 이것을 조금 간과해서 몇번 틀렸다. 그리고 if else를 이용해서 해결해주면 되는데 i=0일때는 무조건 max값에 d[0]의 값을 넣어주어야 한다. 열혈c에서는 외부에 지정을 해주었지만 나는 이것이 편하기에 이 방법을 활용한다. 그리고 나머지 경우에는 max와 비교하여 d[i]가 큰 경우에만 바꿔준다. 그리고 여기서는 최종 출력은 num를 출력하므로 i+1를 출력해주어야 한다. 0자리가 아니라 1자리부터 시작이기 때문이다. 그리고 return 값은 num변수를 반환해주면 되는 것이다.
'C language > Codeup' 카테고리의 다른 글
[C] 코드업 문제풀이 3004: 데이터 재정렬 (0) | 2021.08.19 |
---|---|
[C] 코드업 문제풀이 1805:입체기동장치 생산공장 (0) | 2021.08.19 |
[C] 코드업 문제풀이 1420: 3등찾기 (0) | 2021.08.18 |
[C] 코드업 문제풀이 1172: 세수 정렬하기 (0) | 2021.08.18 |
[C] 코드업 문제풀이 1460: 2차원 배열 순서대로 채우기 1-1 (0) | 2021.08.18 |