programming

프로그래밍 퀴즈 Diagonal Difference 파이썬 풀이 해설


by Kitle · 2020. 07. 26.



원본 문제 : https://www.hackerrank.com/challenges/diagonal-difference/problem

풀이  github 에서 보기 : https://github.com/kitlexyz/algorithm/blob/master/hackerrank/diagonal-difference.py

주어진 list(배열)의 대각선에 있는 원소들을 더한 후 정방향에서 역방향 대각선 값을 뺀 절대값을 구하라

솔루션 :

1) 대각선 값 추출하기 / 반대 대각선 값 추출하기

대각선 값은 0,0 1,1 을 응용한다. 반대 대각선은 인덱스를 응용할 수도 있지만 여기서는 그냥 배열(리스트)를 뒤집어 다시 값을 구한다.

2) 절대값 구하기

 기본 함수인 abs()

를 활용한다.

풀이 : 

def diagonalDifference(arr):
primary = 0
secondary = 0

for idx, item in enumerate(arr):
primary += item[idx]
secondary += item[::-1][idx]

return abs(primary-secondary)


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()