본문 바로가기
Web

[Java] 배열, 다차원 배열

by DuncanKim 2022. 6. 13.
728x90

[Java] 배열, 다차원 배열

 

파이썬의 리스트, 자바의 배열 무엇이 다른지는 자료구조 학습을 통해 알게 되었다.

배열은 메모리를 할당받아 길이가 정해져있다는 것,

리스트는 각 데이터 마다 노드와 링크로 이어져 길이 제한이 없다는 것.

 

배열은 길이를 한 번 정하면 바꾸기 어렵다. 새로운 배열을 만들어 그 속에 기존의 데이터를 넣고,

새로 데이터를 추가하는 방법을 써야 한다.

 

이러한 배열을 다시 자바 식으로 리마인드 해본다.

 

 

1. 배열

import java.util.Scanner;

public class ArrayMaxValueFind {

	public static int max(int a, int b) {
		return (a > b) ? a : b;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("생성할 배열의 크기를 입력 : ");
		int number = sc.nextInt();
		
		int[] array = new int[number];
		for(int i = 0; i < number; i++) {
			System.out.print("배열에 입력할 숫자를 입력 : ");
			array[i] = sc.nextInt();			
		}
		int result = -1;
		for(int i = 0; i < number; i++) {
			result = max(result, array[i]);
		}
		
		System.out.println("배열 안의 최대 값은 '" + result + "'");
		sc.close();
	}

}

배열의 크기를 임의로 입력해서 그 배열에 정수 데이터를 집어넣고 그 안의 최대값을 구하는 함수를 구현했다.

result 변수를 활용해서 max값을 계속 저장하고, 최종적으로 뽑아내는 구조를 가지고 있다.

 

++
new는 새로운 인스턴스를 만들기 위해서 사용되는 자바의 예약어다.
int[] array = new int[100];

(인스턴스, 클래스 등등의 개념은 객체 지향에서 다시 한 번 복습할 것이다.)

 

 

2. 배열 활용하기(랜덤 숫자 100개 더하기)

public class RandomIntAverage {

	public static void main(String[] args) {
		int[] array = new int[100];
		for(int i = 0; i < 100; i++) {
			array[i] = (int) (Math.random() * 100 + 1);
		}
		
		int sum = 0;
		for(int i = 0; i < 100; i++) {
			sum += array[i];
		}	
		System.out.println("sum : " + sum / 100);
	}
} // 결과 : 50을 기준으로 +- 5로 움직이며 값이 프린트 됨

Math.random()을 활용해 배열 안에 랜덤 숫자를 넣고, 그 숫자를 모두 더해서 100으로 나눈 값을 출력하는 함수이다.

신기한게 50에서 왔다갔다 하는 것을 알 수 있는데, 평균적인 확률로 인해 50 언저리에서 움직일 수 밖에 없다.

 

1이 계속 생성될 확률 vs 1을 제외한 숫자가 골고루 생성될 확률

 

당연히 후자가 높기 때문에 평균값이 형성될 수 있는 것이다.

 

'확률'과 '통계'에 신기함을 느꼈다.

 

 

3. 다차원 배열

public class MultiDimensionalArray {

	public static void main(String[] args) {
		
		int N = 50;		
		int[][] array = new int[N][N];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < N; j++) {
				array[i][j] = (int)(Math.random() * 10);			
			}
		}
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < N; j++) {
				System.out.print(array[i][j] + " ");
			}
			System.out.println();
		}	
	}
}

다차원 배열은 배열 속의 배열이라고 할 수 있겠다.

배열 안에 정수나 string 등이 들어간 것이 아니라, 배열이 또 들어가있는 구조이다.

수학에서 배우는 행렬과 같이 활용할 수 있다.

위의 경우, 50*50의 행렬이 만들어지며, 그 안에 들어있는 데이터의 개수는 2,500개가 되는 것이다.

 

int[][] array = new int[][];

라고 하면, 정수 데이터를 가지는 이차원 배열이 초기화된다.

 

위의 함수는 0~9까지의 랜덤한 숫자를 생성해서 이차원 배열에 넣어 출력하는 기능을 가지고 있다.

 

728x90

'Web' 카테고리의 다른 글

[Java] 클래스 변수와 인스턴스 변수의 차이  (0) 2022.06.13
[Java] Java 자바 final  (0) 2022.06.13
[Java] 원 찍기  (0) 2022.06.13
[Java] 반복 함수, 재귀 함수  (0) 2022.06.13
[Java] 사용자 정의 함수  (0) 2022.06.13

댓글