본문 바로가기

기초 튼튼/코테준비

[코테준비] Python 해커랭크(HackerRank) 문제풀이 - 4 (2D Array)

* 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 Python 문제 정리.

 


1. 문제

  • 2차원 배열을 다루는 문제입니다. NxN로 구성되어있는 2차원 어레이에서 3x3 단위의 매트릭스 내의 숫자의 합 중 가장 큰 합을 반환하는 문제
    • 정확히는 3x3 내의 [2,1] 위치의 벨류값과 [2,3] 위치의 벨류값을 제외한 값들의 합을 반환하는 문제입니다.

2. 정답

def hourglassSum(arr):
    width = len(arr[0]) - 2
    length = len(arr[1]) - 2
    maxSum = -9999

    for i in range(0,width):
        for j in range(0,length):
            sumTemp = 0
            for x in range(0,3):
                if x == 1:
                    sumTemp = sumTemp + arr[i+x][j+1]
                    continue

                sumTemp = sumTemp + arr[i+x][j] + arr[i+x][j+1] + arr[i+x][j+2]
            if maxSum <= sumTemp:
                maxSum = sumTemp

    return maxSum

 

  • 주어진 전체 매트릭스를 첫 3x3부터 마지막 3x3까지 순차적으로 돌며 합을 모두 비교하는 코드를 작성했습니다.
  • maxSum의 초기화를 -9999로 한 이유는 매트릭스의 모든 벨류값들이 마이너스로 구성되어있는 경우, 0으로 초기화했을 때 최대값이 적절히 출력되지 않기 때문입니다.

 

3. 결과

해커랭크(HackerRank)의 Python for Interview'를 풀며 정리한 글입니다.


부족한 블로그에 방문해 주셔서 감사합니다.

잘못된 내용 수정 피드백은 댓글로 적어주세요.

감사합니다 :-)

반응형