22.5.02 [HackerRank]Java 2D Array

서태욱·2022년 5월 3일
0

Algorithm

목록 보기
23/45
post-thumbnail

🌱 배경지식

2차원 배열

2차원 배열이란 배열의 요소로 1차원 배열을 가지는 배열이다.

1차원 배열의 배열 요소로 또 다른 1차원 배열을 사용하여 2차원 배열을 나타낼 수 있다.

따라서 자바에서 2차원 배열은 다음과 같은 문법으로 선언된다.

1. 타입[][] 배열이름;

2. 타입 배열이름[][];

3. 타입[] 배열이름[];
  • 예시
public class Java2DArray {
   public static void main(String[] args) {
       int[][] arr = new int[2][3];
       int k = 10;

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

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

               arr[i][j] = k; // 인덱스를 이용한 초기화

               k += 10;

           }

       }

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

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

               System.out.print(arr[i][j] + " ");

           }

           System.out.println();

       }
   }
}
  • 결과
10 20 30 
40 50 60 

✏️ 해설

import java.util.Scanner;

public class Java2DArray {
    public static void main(String[] args)
    {
        int a[][] = new int[6][6];
        // 문제에서 주어진대로 6x6 배열을 a라는 이름으로 선언한다. 
        int result = -63; //Integer.MIN_VALUE;
        // 입력되는 int의 범위는 -9이상 9이하이고, 모래시계 모양으로 더해질 수 있는 합 중에서 만약 전부 -9인경우를 상정해 result에 담아주고 시작하자. (초기화를 0으로 할 수 없는 이유는 음수가 들어갈 수 있기 때문에 그렇다.)
        try (Scanner scanner = new Scanner(System.in);)
        {
            for(int i = 0; i < 6; i++) // i는 행
            {
                for(int j = 0; j < 6; j++) // j는 열
                {
                    a[i][j] = scanner.nextInt();
                    if (i > 1 && j > 1) // 모래시계가 工 모양으로 반복문을 돌게 되므로 i,j 모두 index 값이 1보다 커야 한다.
                    {
                        int sum =
                                a[i][j] // 工 안에 들어가는 7가지 수를 반복문을 돌려 더하면서 sum>result이면 sum을 result에 담아준다. 
                                        + a[i][j-1]
                                        + a[i][j-2]
                                        + a[i-1][j-1]
                                        + a[i-2][j]
                                        + a[i-2][j-1]
                                        + a[i-2][j-2];
                        if (sum > result) {result = sum;}
                    }
                }
            }
        }
        System.out.println(maxSum);
    }
}

👉 참고

profile
re:START

0개의 댓글