728x90
2D Array - DS | HackerRank
How to access and use 2d-arrays.
www.hackerrank.com
- 문제

문제1 
문제2 - 배열을 모든 요소에 대해 모래시계 모양으로 생긴 요소들의 합을 최댓값을 리턴한다.
풀이
- 배열을 행의 길이 -2 , 배열을 열의 길이 -2까지 이중 for문을 돈다( 모래시계의 첫 번째 위치)= > a 위치

- 시작 위치(a)부터 행의 값 +2 , 열의 값 +2 한 부분까지의 합을 구한다.
- I, h 위치의 값을 빼준다.
-
public static int max; public static int hourglassSum(List<List<Integer>> arr) { max = Integer.MIN_VALUE; for(int i=0;i<arr.size()-2;++i){//행의 길이 -2 for(int j=0;j<arr.get(i).size()-2;++j){ // 열의 길이 -2 까지만 for문을 돈다(모래시계의 시작위치 기준) counting(arr,i, j);//모래시계의 값을 계산해주는 함수 } } return max; } public static void counting(List<List<Integer>> arr,int startI,int startJ){ int sum = 0; for(int i=startI;i<=startI+2;++i){ // 시작위치로 부터 행 +2 ,열 +2 위치까지 모든 값을 더해준다 for(int j=startJ;j<=startJ+2;++j){ sum += arr.get(i).get(j); } } sum -= arr.get(startI+1).get(startJ); //중간의 모래시계의 포함 되지 않는부분을 빼준다 sum -= arr.get(startI+1).get(startJ+2); max = Math.max(max,sum); }
728x90
'알고리즘 > HackerRank' 카테고리의 다른 글
| New Year Chaos (0) | 2021.11.19 |
|---|---|
| Arrays Left Rotation (0) | 2021.11.18 |
| Repeated String (0) | 2021.11.18 |
| Jumping on the Clouds (0) | 2021.11.18 |
| Counting Valleys (0) | 2021.11.18 |