본문 바로가기
Programming/Java

[JAVA] 2차원 배열

by 공부합시다홍아 2023. 11. 3.
 

[JAVA] 배열을 이용한 문제풀이

[JAVA] 정렬과 복사 [JAVA] 배열 연습 [JAVA] 소수(Prime Number) 구하기 반복문을 이용한 별만들기 [JAVA] 제어문 제어문 조건문 / 반복문 / 탈출문 조건문 특정 조건을 만족할 때 실행할 문장을 작성하는데

hong-study.tistory.com


2차원 배열

자료형이 같은 1차원 배열의 모음이라고 한다. 

앞선 1차원 배열에서 초기화나 선언은 비슷하다고 생각하면 된다.

import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
//		 2차원 배열 - 배열안에 배열이 들어간다.
//		 대괄호 2개를 찍는다.
//		
//		{
//			{1,2,3},
//			{1,2,3},
//			{1,2,3}
//		}
		
		int[][] arr = { {1,2,3}, {4,5,6}, {7,8,9} };
		
		System.out.println(Arrays.toString(arr[0]));
		System.out.println(Arrays.toString(arr[1]));
		System.out.println(Arrays.toString(arr[2]));
		
		System.out.println("-----------------------");
		
		System.out.println(arr[0][0]);
		System.out.println(arr[1][2]);
		System.out.println(arr[2][1]);
		
		System.out.println("-----------------------");
		
		// 값 변경
		arr[0][0] = 100;
		System.out.println(arr[0][0]);
		
	}

}

대괄호 안에 2 개 이상의 대 괄호를 추가하여 사용

 


import java.util.Arrays;

public class Main{

	public static void main(String[] args) {
		
		int[] arr1 = {1,2,3};
		int[] arr2 = {4,5,6};
		int[] arr3 = {7,8,9,10};
		
		int[][] a = {arr1, arr2, arr3};
		
		for(int i = 0; i<a.length; i++) {
			
			for(int j=0; j<a[i].length; j++) {
				
				System.out.print(a[i][j] + " ");
				
			}
		}
		System.out.println();
		System.out.println("=============================");
		
		int[][] b = new int[3][4];
		int x = 0;
		for(int i = 0; i < b.length; i++) {
			
			for(int j=0; j < b[i].length; j++) {
				
					b[i][j] = 1+x++;
				
				System.out.print(b[i][j] + " ");
			}
			
		}
		
	}
}

3개의 배열은 각 기 따로 선언 하고

다차원배열 변수에 해당 변수들을 추가해도 된다.

System.out.println("=============================") 구문을 기준으로 

 

위는 서로 다른 배열을 다차원배열의 인덱스로 설정하고 설정한 다차원 배열의 인덱스를 출력하는 방법입니다.

 

아래는 크기가 주어진 다차원 배열 내에 1~12까지의 값을 추가하여 출력하는 방법입니다.


예제  : 주어진 격자판(배열)에 쓰인 수 중 최댓값을 구하시오.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		int[][] a = new int[9][9];
		int max = a[0][0];
		int c = 0;
		int d = 0;

		for (int i = 0; i < a.length; i++) {

			for (int j = 0; j < a[i].length; j++) {

				a[i][j] = sc.nextInt();

				if (a[i][j] >= max) {
					
					max = a[i][j];
					
					c = i+1;
					d = j+1;
					
				}
			}
		}
		
		System.out.println(max);
		System.out.println(c + " " + d);

	}
}

결과값은 가장 큰 수를 출력하고, 아래에는 그 값의 행과 열을 출력한다. 

 

  • 크기가 81인 다차원 배열 
  • 초기 최대값은 맨 처음 수로 저장해준다.
  • 행과 열의 위치를 확인할 변수 두 개를 선언
  • 중복 반복문을 사용하여, i의 값은 행을 j의 값을 이용해 열을 출력할 수 있도록 한다.
  • 다차원 배열과 초깃값을 비교하여, 다차원배열의 특정 값이 더 크다면, 초기값으로 새로 저장한다.
  • 끝까지 반복을 하는 동안, 행과 열의 위치에 해당하는 값에 i와 j를 더할 때마다 
  • 해당 인덱스의 위치를 알 수 있다.
728x90

'Programming > Java' 카테고리의 다른 글

[JAVA] 스택(Stack)과 큐(Queue)  (0) 2023.11.07
[JAVA] 매서드  (0) 2023.11.06
[JAVA] 배열을 이용한 문제풀이  (2) 2023.11.03
[JAVA] 정렬과 복사  (0) 2023.11.02
[JAVA] 배열 연습  (0) 2023.11.01