새소식

Programming/1 Day 1 Commit

[HackerRank] Diagonal Difference (Python3)

  • -
2023년을 맞아 새롭게 시작하는 1 Day 1 Commit Challenge!
2022년 한 해 동안 6개 밖에 하지 않아서 조금 부끄럽다... 
인도네시아에서 학생들을 가르치면서 하루에 하나씩 알고리즘을 정복해보자. 
오늘은 조금 쉬운 Hackers의 prepare/algorithm에서 문제를 가져왔다. 
 

Diagonal Difference | HackerRank

Calculate the absolute difference of sums across the two diagonals of a square matrix.

www.hackerrank.com

#!/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
    left = 0
    right = 0
    
    for i in range(len(arr)): # 3
        print("i", i)
        left += arr[i][i] # 0 0 / 1 1 / 2 2 
        right += arr[i][len(arr)-i-1] # 0 2 / 1 1 / 2 0
        # print("l", left)
        # print("r", right)
    return abs(left - right)
        
        

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

    n = int(input().strip())
    # print("n", n)
    arr = []
   

    for _ in range(n):
        arr.append(list(map(int, input().rstrip().split())))
    # print(arr)
    result = diagonalDifference(arr)

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

    fptr.close()
단순히 diagonal difference를 구하면 되는 문제. 
diagonal은 머신러닝할 때 계속 나왔던 부분이다. 행렬에도 많이 등장하는 개념.
대각선 방향으로 더해주고 더해주고 abs함수 써서 부호에 상관없이 그 차이만 구하면 된다. 

 

 

GitHub - Park-Minjoo/CODINGINTERVIEW_PRACTICE: 1 Day 1 Problem since 2022.4.7

1 Day 1 Problem since 2022.4.7. Contribute to Park-Minjoo/CODINGINTERVIEW_PRACTICE development by creating an account on GitHub.

github.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.