[6 - 23]
1. 문제설명
2. 나의 해답
package ex6_23;
public class Exercise6_23 {
public static void main(String[] args) {
// TODO Auto-generated method stub
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인 배열
}
private static int max(int[] data) {
// TODO Auto-generated method stub
// 데이터 검증
if(data == null ||data.length == 0)
return -999999;
int max = 0;
for(int i = 0 ; i < data.length ; i++) {
if(data[i] > max)
max = data[i];
}
return max;
}
}
정답
3. 정답 코드
4. 보충 및 회고
(1) 보충
(2) 회고 : 문제풀이과정에서 어떻게 접근하려고했는지 (접근방법) + 어려움이 있었는데 해결했다.
1) 유효성 체크는 이제 바로 쉽게 할 수있다
다만 Null부터 먼저 체크하자 그러지않으면 문제가 발생한다.
왜나하면 null인 상태로 인수가 오면 length는 어차피 null이여서 나올수있는 값 자체가 있을 수없기 때문이다.
2) 최댓값으로 max를 0으로 선언해주기 보다는 배열의 0번째를 넣어주는것이 바람직하다.
그리고 시작을 배열을 1번째부터 비교하면 더욱더 좋다
한번의 반복을 줄일수있기 때문이다.
for(int i = 0 ; i < data.length - 1 ; i++) {
if(data[i + 1] > max)
max = data[i + 1];
}
내 생각으로 모범답안은 index의 시작을 1로했지만, 보다 바람직한 방법은 0부터 시작하고 그 외의 값을 i + 1로 하는것이 바람직 하다고 생각한다.
이 경우 out of index가 발생할 수있기 때문에 종료절도 -1로 해주면 충분히 해결될 수있다.
'문제풀이 > 자바' 카테고리의 다른 글
TIL - 자바의정석 연습문제[ch3 - 4 ,5] (0) | 2023.01.09 |
---|---|
TIL - 자바의정석 연습문제[ch6 - 24] (0) | 2023.01.07 |
TIL - 자바의정석 연습문제[ch6 - 22] (0) | 2022.12.30 |
TIL - 자바의정석 연습문제[ch6 - 21] (0) | 2022.12.30 |
TIL - 자바의정석 연습문제[ch6 - 20] (0) | 2022.12.30 |