본문 바로가기

프로그래밍/코드분석

자바의 정석 연습문제 6-23

[ 문 제 ]


max 메서드 작성

기능 : 주어진 int형 배열의 값 중 가장 큰 값을 반환.

만일 주어진 배열이 null이거나 크기가 0이면, -999999를 반환.

반환타입 : int

매개변수 : int[] arr - 최대값을 구할 배열


class Exercise6_23
{
/*
(1) max메서드를 작성하시오.
*/

public static void main(String[] args)
{
int[] data = {3,2,9,4,7};
System.out.println(java.util.Arrays.toString(data));
System.out.println("최대값:"+max(data));
System.out.println("최대값:"+max(null));
System.out.println("최대값:"+max(new int[]{})); // 크기가 0인 배열
}
}



[ 나의 풀이 ]

class exercise
{
public static int max(int[] data){

if( data == null || data.length == 0)
return -999999;

for (int i = 0; i<data.length; i++){

int maxValue = data[0];

if(data[i]<=data[i+1]){

maxValue = data[i+1];
return maxValue;
}
}
return data[0];
}

public static void main(String[] args)
{
int[] data = {3,2,9,4,7};
System.out.println(java.util.Arrays.toString(data));
System.out.println("최대값:"+max(data));
System.out.println("최대값:"+max(null));
System.out.println("최대값:"+max(new int[]{})); // 크기가 0인 배열
}
}



[ 개선점 ]


----------------------------------------나의 코드------------------------------------------ for (int i = 0; i<data.length; i++){

int maxValue = data[0];

if(data[i]<=data[i+1]){

maxValue = data[i+1];
return maxValue;
}
}
return data[0];
}

-----------------------------------------------------------------------------------------


--------------------------------------개선 된 코드---------------------------------------


int max = arr[0]; // 배열의 첫 번째 값으로 최대값을 초기화 한다.


for(int i=1; i< arr.length;i++) { // 배열의 두 번째 값부터 비교한다.
if(arr[i] > max)
max = arr[i];
}
return max;


-----------------------------------------------------------------------------------------


[ 깨달은 점 ]


1. 전달받는 매개변수의 이름 값은 달라도 됨.


메인메서드에서 data값을 던져주지만

max메서드에서는 int[] arr로 받고 있음.