본문 바로가기

* 컴퓨터 언어 (Computer Language)/Python

해커랭크 Diagonal Difference 문제풀이 (Problem Solving 코딩테스트 5단계)

 

안녕하세요 Twodragon 입니다.

오늘도 Problem Solving 코딩테스트도 공부해볼 마음으로 일일 1일 코딩 일기를 올려보려고 합니다. 하나의 습관을 만들기 위해 이 글을 포스팅하고 1일 코딩 테스트를 하려고 합니다. 여러분들도 함께하시죠!

 

해결방법:

일단 이를 배열로 천천히 살펴보면 첫번째 arr[i][j] 는 i=j 모습이 보이고, 두번째 arr[i][j]i=index 그대로, j=최대 index에서 순차적으로 - 감소하는 코드로 구성하면 됩니다.

 

arr[1][1]=11    arr[1][3]=4

arr[2][2]=5      arr[2][2]=5

arr[3][3]=-12   arr[3][1]=10

11+5-12=4,    4+5+10=19

 

절대값 abs |4-19| = 15 라는 값이 나오게 된다. 

 

문제:

 

해답(python3):

#!/bin/python3

import math
import os
import random
import re
import sys

#
# Complete the 'diagonalDifference' function below.
#
# The function is expected to return an INTEGER.
# The function accepts 2D_INTEGER_ARRAY arr as parameter.
#

def diagonalDifference(arr):
    # Write your code here
    max_index=len(arr)-1
    sum_right = 0
    sum_left=0
    for index in range(len(arr)):
        right_index= index
        left_row=max_index-index
        left_col=index
        sum_right=sum_right+arr[right_index][right_index]
        sum_left=sum_left+arr[left_col][left_row]
    return abs(sum_right - sum_left)

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    n = int(input().strip())

    arr = []

    for _ in range(n):
        arr.append(list(map(int, input().rstrip().split())))

    result = diagonalDifference(arr)

    fptr.write(str(result) + '\n')

    fptr.close()