본문 바로가기

HackerRank

[HackerRank] Diagonal Difference - Kotlin

Diagonal Difference  (easy)

link - 

https://www.hackerrank.com/challenges/diagonal-difference/problem?h_r=profile

 

Diagonal Difference | HackerRank

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

www.hackerrank.com

 

1. 문제 파악하기

 - 입력: 정사각형 길이 n, 정사각형 해당하는 이차원 배열 

3

11 2 4

4 5 6

10 8 -12

 

- 대각선 2개에 위치한 값의 합을 각각 더하고, 각 합의 차에 대한 절대값을 구한다 

 

2. 아이디어

- 각 대각선을 더하는 index를 구해보면

   0~n 까지 for문을 돌며 
   - \ 방향에 대한 인덱스 규칙 : arr[ i ][ i ]
   - / 방향에 대한 인덱스 규칙 : arr[ i ][ n - i - 1 ] 

 

3. 풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
fun diagonalDifference(n: Int, arr: Array<Array<Int>>): Int {
    var a = 0
    var b = 0
    for(i in 0 until n) {
        a += arr[i][i]
        b += arr[i][n-i-1]
    }
    return Math.abs(a-b)
}
 
fun main(args: Array<String>) {
    val n = readLine()!!.trim().toInt()
 
    val arr = Array<Array<Int>>(n, { Array<Int>(n, { 0 }) })
 
    for (i in 0 until n) {
        arr[i] = readLine()!!.trimEnd().split(" ").map{ it.toInt() }.toTypedArray()
    }
 
    val result = diagonalDifference(n, arr)
 
    println(result)
}
 
cs

'HackerRank' 카테고리의 다른 글

[HackerRank] Staircase - Kotlin  (0) 2021.07.08
[HackerRank] Plus Minus - Kotlin  (0) 2021.07.05
[HackerRank] Compare the Triplets - Kotlin  (0) 2021.07.02
[HackerRank] Simple Array Sum - Kotlin  (0) 2021.07.02
Hacker Rank 시작하기  (0) 2021.07.02