2차원 배열

호떡·2022년 8월 10일
0

💡사실 2차원 배열 탐색은 알고리즘 문제를 풀기 위한 아이디어 중 하나이다. 완전탐색이나 그리디 같은 '알고리즘' 분류에 포함되는 것은 아니다.

2차원 배열

// arr[N][N] 형태일 때
	int[][] arr = {{1,2,3}, {4,5,6}, {7,8,9}};
		
	int N = arr.length;				//행
	int M = arr[0].length;			//열
		
// arr[N][] 형태일 때
	int[][] arr = {{1,2}, {3,4,5,6}, {7,8,9}};
	
	int N = arr.length;
		
	for(int i=0; i<N; i++) {
		int M = arr[i].length;
		System.out.println(M);
	}

2차원 배열의 접근


// N*N 형태 순회
	//	1. 행 우선 순회
	for(int i=0; i<N; i++) {		
		for(int j=0; j<M; j++) {
			System.out.printf("%2d", arr[i][j]);
		}
		System.out.println();
	}
    
		
	//	2. 행 역우선 순회 -1
	for(int i=0; i<N; i++) {
		for(int j=M-1; j>=0; j--) {
			System.out.printf("%2d", arr[i][j]);
		}
		System.out.println();
	}
		
		
	// 3. 열 우선 순회
	for(int i=0; i<N; i++) {		
		for(int j=0; j<M; j++) {
			System.out.printf("%2d", arr[j][i]);
		}
		System.out.println();
	}
		
	for(int j=0; j<M; j++) {
		for(int i=0; i<N; i++) {		
			System.out.printf("%2d", arr[i][j]);
		}
		System.out.println();
	}
    
	// 4. 열 역우선 순회
	for(int i=0; i<M; i++) {
		for(int j=N-1; j>=0; j--) {
			System.out.printf("%2d", arr[j][i]);
		}
		System.out.println();
	}    
    
    // 5. 지그재그 순회
    // (1)
    for(int i=0; i<N; i++) {
		if(i%2==0) {
			for(int j=0; j<M; j++) {
				System.out.printf("%2d",arr[i][j]);
			}
		} else {
			for(int j=M-1; j>=0; j--) {
				System.out.printf("%2d",arr[i][j]);
			}
		}
		System.out.println();
	}
    
    // (2)
    for(int i=0; i<N; i++) {
		if(i%2==0) {
			for(int j=0; j<M; j++) {
				System.out.printf("%2d",arr[i][j]);
			}
		} else {
			for(int j=0; j<M; j++) {
				System.out.printf("%2d",arr[i][M-1-j]);
			}
		}
		System.out.println();
	}
    
    // (3)
    for(int i=0; i<N; i++) {
		for(int j=0; j<M; j++) {
			if(i%2==0) 
				System.out.printf("%2d",arr[i][j]);
			else 
				System.out.printf("%2d",arr[i][M-1-j]);
		}
		System.out.println();
	}

0개의 댓글