본문 바로가기

Coding Tests/백준 온라인

( C ) 백준온라인 2562번(최댓값과 번호 구하기)

 

<정답 풀이>

#include<stdio.h>
int main(void)
{
	int arr[9];
	int max = 0;
	for (int i = 0; i < 9; i++)
	{
		scanf("%d", &arr[i]);
		if (max < arr[i]) max = arr[i];
		
	}
	printf("%d\n", max);
	for (int i = 0; i < 9; i++)
	{
		if (max == arr[i])
			printf("%d", i + 1);
	}
	return 0;
}

최댓값을 먼저 구해 출력을 하고, 그다음에 if문의 max == arr[ i ] 조건을 통해 그 최댓값이 몇번쨰로 입력이 되었는지를 구하였다. max == arr[ i ]의 조건은 이미 최댓값을 알고 있기에 가능한 조건이다. 

i + 1을 출력해준 이유는 배열의 인덱스 넘버가 0부터 시작되기때문이다.(입력의 순서는 0번째가 아닌 첫번째라고 해야하기에 1을 더해준것)

 

<2번째 정답>

#include<stdio.h>
int main(void)
{
	int arr[9];
	int num,max = 0;

	for (int i = 0; i < 9; i++)
	{
		scanf("%d", &arr[i]);
		if (max < arr[i]) max = arr[i];
		if (max == arr[i]) num = i + 1;
	}
	printf("%d\n%d", max,num);
	return 0;
}

겉보기에도 첫번째 풀이보다 코드길이가 훨씬 간결해졌음을 알 수 있다. 두번쨰 코드가 조금 더 좋은 풀이라고 할 수 있을 것 같다.