배열

zee-chive·2024년 7월 16일

Java

목록 보기
2/12

1차원 배열

배열 생성, 초기화 :

  • 자료형[] 배열이름 = new 자료형[길이];
  • 자료형[] 배열이름 = new 자료형[] {값1, 값2, 값3};
  • 자료형[] 배열이름 = {값1, 값2, 값3};


배열 읽는 법

  • for 문으로 배열 읽기
for(int i =  0; i<nums.length; i++) {
	System.out.println(nums[i]);
}

  • for each 문으로 배열 읽는 방식 : read-only 배열의 값 수정 불가
for(int num : nums) {
	System.out.println(num);
}

  • Array의 기본 함수로 배열 읽는 방식
System.out.println(Arrays.toString(nums));

결과 : [23, 7, 20, 11, 6]




배열 복사

  • for문으로 값을 하나씩 복사.
int[] nums = {1, 4, 6, 1, 4};
int[] temp = new int[nums.length*2];
		
for(int i =0; i<nums.length; i++) {
	temp[i] = nums[i];
}

  • Arrays.copyOf(복사할 배열, 새로운 배열의 크기)
int[] temp2 = Arrays.copyOf(nums, 8);

  • Arrays.copyOfRange(원본 배열, 시작점, 새로운 열의 끝인덱스)
int[] temp3 = Arrays.copyOfRange(nums, 0, nums.length/2);

  • System.arraycopy(원본배열, 시작점, 복사배열, 복사배열의시작점, 복사할길이(갯수)
int[] temp4 = new int[nums.length*2];
System.arraycopy(nums, 0, temp4, 0, nums.length);




빈도 수 구하기

다음 0-9 숫자가 들어가는 배열에서 각 정수가 출현하는 횟수를 구하시오.

int[] arr = {3, 7, 2, 5, 7, 7, 9, 2, 8, 1, 1, 5, 3};
		
int[] result = new int[10];
		
for (int i = 0; i< arr.length; i++) {
	result[arr[i]] += 1;
}
		
System.out.println(Arrays.toString(result));

기준 값이 정해지지 않는 경우, arr의 max 값을 구해서 result 길이를 구해도 된다.





다차원 배열

  • n차원 배열의 요소에 접근하기 위해서는 n개의 인덱스가 필요하다.

배열 생성, 초기화 :
  1. 자료형[][] 배열이름 = new 자료형[1차원 배열의 갯수][1차원 배열의 크기];

  2. 자료형[][] 배열이름 = new 자료형[1차원 배열의 갯수][];
    // 2차원 배열 : 1차원 배열의 참조값을 요소로 갖는 배열이기 때문에
    // 배열의 값은 메모리 상, 연속해서 놓이지 않을 수도 있다.

  3. 자료형[] 배열이름
    = new 자료형[][] {
    {1차원 배열의 초기값},
    {2차원 배열의 초기값}
    };

int[][] arr2 = new int[3][4];
		
int[][] arr3 = new int[3][];
arr3[0] = new int[10];
arr3[1] = new int[4];
arr3[2] = new int[] {1,2,3,4};
		
int[][] arr4 = new int[][] {
				{1,2,3,4}, {1,2,3,4}, {1,2,3,4}
				};



다차원 배열 출력 시, Arrays.deepToString()

System.out.println(Arrays.deepToString(arr2));



실습 문제

public static void main(String[] args) {
	int[][] grid = {
					{2, 3, 1, 4, 7},
					{8, 13, 3, 33, 1}, 
					{7, 4, 5, 80, 12}, 
					{17, 9, 11, 5, 4}, 
					{4, 5, 91, 27, 7}	
					};
		
	//3의 배수의 개수와 그들의 합 
	int cnt = 0;
	int sum = 0;
		
	for (int i = 0; i<grid.length; i++) { 		// grid 의 2차원 배열의 길이 
		for(int j = 0; j<grid[i].length; j++) {	// grid 의 1차원 배열의 길이
			if (grid[i][j] % 3 == 0) {
				sum += grid[i][j];
				cnt++;
			}
		}
	}
	System.out.println(sum + " " + cnt);
}
profile
누가 봐도 읽기 쉬운 글이 최고의 글이다.

0개의 댓글