HackerRank Java 2D Array

문제 링크 : https://www.hackerrank.com/challenges/java-2d-array/problem

간략한 설명 => 6 * 6 이차원 배열에서 HourGlass 모양의 합 중 가장 큰 합을 출력해내면 된다.

ex) 1 1 1 0 0 0
      0 1 0 0 0 0
      1 1 1 0 0 0
      0 0 0 1 2 3
      0 0 0 1 3 1
      0 0 0 2 2 2

1 + 2 + 3 + 3 + 2 + 2 + 2 = 15

출력 15


가장 큰 HourGlass 는 1 2 3
                                        3
                                     2 2 2


접근 방법 : 모래시계는 무조건 3 * 3 이차원 배열속에 있다.
                    따라서 모든 3*3 이차원 배열의 부분을 뽑아내서 합을 구한 후
                   최대값을 출력 해준다.



import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

public class Solution {

private static final Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
int[][] arr = new int[6][6];

for (int i = 0; i < 6; i++) {
String[] arrRowItems = scanner.nextLine().split(" ");
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

for (int j = 0; j < 6; j++) {
int arrItem = Integer.parseInt(arrRowItems[j]);
arr[i][j] = arrItem;
}
}
int maxValue = Integer.MIN_VALUE;
for (int a = 0; a < 4; a++) {
for (int i = 0; i < 4; i++) {
int tempValue = 0;
int rowFlag = -1;
for (int j = i; j < i+3; j++) {
rowFlag++;
int colFlag = -1;
for (int k = a; k < a+3; k++) {
colFlag++;
if(rowFlag == 1) {
if (colFlag == 1){
tempValue += arr[j][k];
}
} else {
tempValue += arr[j][k];
}
}
}
maxValue = Math.max(maxValue, tempValue);
}
}
System.out.println(maxValue);
scanner.close();
}
}

댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째