알고리즘/HackerRank

2D Array - DS

webmaster 2021. 11. 18. 19:41
728x90

https://www.hackerrank.com/challenges/2d-array/problem?isFullScreen=true&h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays

 

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