불로구

[ 자바 알고리즘/자료구조] - 자바 배열 복사 && 배열의 최대값 본문

프로그래밍/알고리즘

[ 자바 알고리즘/자료구조] - 자바 배열 복사 && 배열의 최대값

맹이맹이 2021. 2. 7. 23:43
반응형

이번에는 배열을 복사 후 복사된 배열의 최댓값을 찾아보겠다.

일반적으로 자바에서 배열복사는 for문과 clone라는 함수를 사용할 수 있다. ( 다른 방법도 많다 )

 

public class 배열복사 {
	public static void main(String[] args){
		int[] arr = new int[10];
		int[] copyArr;
		int[] a = {1,2,3,4,5};
		for(int i=0; i<arr.length; i++){
			arr[i] = i;
		}
		System.out.println(Arrays.toString(arr));
		//System.out.println(Arrays.toString(copyArr)); //컴파일오류
		copyArr = (int[]) arr.clone();
		copyArr[3] = 10;
		System.out.println(Arrays.toString(copyArr));
		
		int max = copyArr[0];
		for(int i=1; i<copyArr.length; i++){
			if(copyArr[i] > max){
				max = copyArr[i];
			}
		}
		System.out.println(max);
	}
}

 

- 1번째 줄에서 10개의 크기를 가진 arr이란 배열을 선언해주었다.

- 2번째 줄에서 copyArr이라는 복사할 배열을 선언해주었다.

- 3번째 줄은 의미가 없다.

- 4번째 줄에서 arr배열의 값을 0~9까지 대입해주었다.

- 7번째 줄의 출력을 배열된 arr의 값인 0,1,2,3,4,5,6,7,8,9가 출력된다.

- 8번째 줄을 보자. Arrays.toString이란 배열의 요소를 한 번에 볼 수 있는 기능이다. 하지만 copyArr배열은 아직 복사가 되지 않았으니 컴파일 오류가 발생한다.

- 9번째 줄에서 clone()를 통해 배열을 복사한다. ( int[] 타입으로 캐스팅시켜주었다. )

- 10번째 줄에서는 8번째 줄과 다르게 복사가 되어 요소에 값이 대입되었으므로, 정상적으로 출력이 된다.

- 11번째 줄에서는 max라는 최대값변수에 copyArr의 0번째 인덱스 값을 대입시켜주었다.

- 12번째 줄에서는 for(반복문)을 통해 1부터 copyArr의 길이보다 -1 만큼 루프를 돌려 max값보다 크다면 max값에 copyArr의 인덱스를 대입시켜주었다.

( 왜 copyArr.length보다 1적은 값만큼 반복을 돌릴까? -> 배열은 0번째 인덱스부터 시작하기 때문이다! )

 

 

반응형
Comments