취준일기

[TIL_알고리즘]HackerRank_Day 11: 2D Arrays

둉영 2020. 11. 8. 01:03

HackerRank_Day 11: 2D Arrays


𝕄𝕚𝕤𝕤𝕚𝕠𝕟

행렬 A의 모든 모래 시계(hourglss)에 대한 모래 시계 합계를 계산 한 다음 최대 모래 시계 합계를 인쇄해라.

Calculate the hourglass sum for every hourglass in A, then print the maximum hourglass sum.

 

행렬 A의 모래시계(hourglass)

총 7개의 숫자가 들어가 있고 7개의 값들의 합이 모래시계의 합

총 16개의 모래시계가 나오고 이중 가장 큰 모래시계 합을 가진 모래시계를 출력

 

행렬 A

 

행렬 A의 16개의 모래시계

결과

 

 

ⓢⓞⓛⓥⓔ ⓐ ⓟⓡⓞⓑⓛⓔⓜ

 

 

# import sys

# sys.stdin=open("input.txt",'r')

# A=[]

# for i in range(6):

#   A.append(list(map(int,input().rstrip().split())))



# import math

# import os

# import random

# import re

# import sys




# if __name__ == '__main__':

#     arr = []

 

#     for _ in xrange(6):

#         arr.append(map(int, raw_input().rstrip().split()))



A=[[1,1,1,0,0,0],

[0,1,0,0,0,0],

[1,1,1,0,0,0],

[0,0,2,4,4,0],

[0,0,0,2,0,0],

[0,0,1,2,4,0]]

 

def IsSafe(y,x):

  if 0<=y<6 and 0<=x<6:   

    return True

  else:

    return False

 

#만약 x=1,y=1,dir=0

#모래시계에 총 7개의 값 -> 방향 7개 필요

 

dx=[-1,-1,-1,0,1,1,1]

dy=[-1,0,1,0,-1,0,1]

max=0 #가장 큰 합을 담을 변수

 

for x in range(6):

  for y in range(6):

    nowsum = 0 #각 모래시계의 합

    for dir in range(7):

      newX = x+dx[dir]

      newY = y+dy[dir]

      if IsSafe(newX,newY):

        nowsum=A[newX][newY]

    if nowsum>max:

      max=nowsum

print(max)