[Java] 배열의 항목에서 최대값 구하기

김하밍·2023년 12월 18일
0

Java

목록 보기
21/46

❌ 처음에 작성한 오답 코드

// 출력할 최대값 담을 변수와 배열은 주어진다.
int max = 0;
int[] array = {1, 5, 3, 8, 2};

// Todo:
//	1. for문을 이용해야한다.
//	2. 자바에서 최대값 구할 때 -> Math.max(a, b) 메서드 사용하기
for (int i = 0; i < array.lenght; i++) {
max = Math.max(array[i], array[i+1]);
}

System.out.println("max: " + max);
// 출력 기댓값
// max: 8

✔️ 틀린 이유

실행해보니 인덱스 범위를 벗어나는 오류가 발생했습니다.

실제로 직접 0번부터 대입해보며 계산해보니 구한 max가 유지되지 않고 비교 대상 두 값 모두 인덱스를 이동한다는 문제를 발견했습니다.

인덱스가 증가함에 따라 비교대상은 변경되지만, 매 비교마다 찾은 최댓값은 유지할 수 있으려면 어떻게 설계해야되는지 생각해봅니다.

max라는 변수를 고정 비교대상을 설정해두면, i에 따라 움직이지 않고 최댓값이 max에 잘 저장됨을 예측할 수 있었습니다.

코드로 작성하여 주어진 배열 내 요소 값들을 변경해가며 반례가 있는지 확인하였고, 기댓값이 정상적으로 출력되는 것을 확인할 수 있었습니다.


✅ 변경한 코드

for (int i = 0; i < array.length; i++) {
            max = Math.max(max, array[i]);
        }

참고
도서 '혼자 공부하는 자바'

profile
나만의 언어로 기록하며 성장하기 !

0개의 댓글