끄적거림

[HackerRank] 2D Array 본문

Python/알고리즘(코딩테스트)

[HackerRank] 2D Array

Signing 2022. 6. 29. 20:12
728x90
반응형

문제

요약하자면, 6 by 6 2차원 행렬이 주어질때, 3 by 3 사이즈의 모래시계모양의 숫자의 합들을 비교하여 가장 큰 수를 반환하는 것이다.

 

코드

def hourglassSum(arr):
    top = -90
    for r in range(1,5):
        tmp = -90
        for c in range(1,5):
            tmp = max(tmp, arr[r][c] + sum(arr[r-1][c-1:c+2]) + sum(arr[r+1][c-1:c+2]))
        top = max(top, tmp)

    return top

if __name__ == '__main__':
    arr = [[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]]

    result = hourglassSum(arr)

    print(result)

해설

  1. 모래시계의 중심으로 행렬을 순회한다.
  2. 모래시계의 윗부분과 아랫부분은 slicing으로 처리하여 더해준다.
  3. 모든 모래시계들을 array에 담지 않고, 가장 큰 값만 반환하면 되기 때문에, 매 loop마다 가장 큰 값을 가려낸다.
728x90
반응형

'Python > 알고리즘(코딩테스트)' 카테고리의 다른 글

[HackerRank] New Year Chaos  (0) 2022.06.29
[HackerRank] Arrays: Left Rotation  (0) 2022.06.29
[HackerRank] Repeated String  (0) 2022.06.29
[HackerRank] Jumping on the Clouds  (0) 2022.06.28
[HackerRank] Counting Valleys  (0) 2022.06.28
Comments