알고리즘/beakjoon

[백준][C] 2562 _ 최댓값

SOo • 2023. 4. 12. 17:49
 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어

www.acmicpc.net

 

문제

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

예를 들어, 서로 다른 9개의 자연수

3, 29, 38, 12, 57, 74, 40, 85, 61

이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.

예제 입력 1 복사

3
29
38
12
57
74
40
85
61

예제 출력 1 복사

85
8

 


코드 1) 

#include <stdio.h>

int main() {
	int n; // num 배열의 요소
	int num[100] = { 0 }; // num 배열 생성
	int max = num[0]; // max 전역변수 설정, 계속 사용할거니까
	//num에요소값 넣기
	for (int i = 0; i < 9; i++)
	{
		scanf("%d",&n); 
		num[i] = n;
	}
    //최대값 설정
	for (int i = 0; i < 9; i++)
	{
		if (num[i] > max)
			max = num[i];
	}
	//출력
	printf("%d \n", max);
	for (int i = 0; i < 9; i++)
	{
		if (num[i] == max)
			printf("%d", i + 1);
	}
}

 

코드 2) 동적할당

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int n; //num 배열의 요소
	int* num = NULL; //배열 포인터 초기화 
	//num 동적할당 배열 생성, 배열의 크기는 int * 9
	num = (int*)malloc(sizeof(int) * 9);
	for (int i = 0; i < 9; i++)
		scanf("%d", &num[i]);

	int max = num[0];
	for (int i = 0; i < 9; i++)
	{
		if (num[i] > max)
			max = num[i];
	}
	printf("%d\n", max);
	for (int i = 0; i < 9; i++)
	{
		if (num[i] == max)
			printf("%d", i + 1);
	}
	//동적 할당 메모리 해제
	free(num);
	return 0;