[algorithm] 격자판 최대합

Ho-eng·2023년 4월 17일
0

❓ 격자판 최대합


5*5 격자판에 아래와 같이 숫자가 적혀있습니다.
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19
N X N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합니다.

  • 입력설명

    첫 줄에 자연수 N이 주어진다.(1<=N<=50)
    두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. 각 자연수는 100을 넘지 않는다.
  • 출력설명

    최대합을 출력합니다.
  • 입력예제 1

    10 13 10 12 15
    12 39 30 23 11
    11 25 50 53 15
    19 27 29 37 27
    19 13 30 13 19
  • 출력예제 1

    155

❗ 문제 풀이

내 풀이

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        // 각 행과 열의 합을 담아낼곳을 정하자
        // 행과 열을 탐색 (2차원배열)=> arr[행][열]
        // 2중 for문을 돌려보자.

        let answer = 0
        let rowSum = 0
        let columnSum = 0

        for (let i = 0; i < arr.length; i++) {
          rowSum = 0
          columnSum = 0
          for (let j = 0; j < arr.length; j++) {
            rowSum += arr[i][j]
            columnSum += arr[j][i]
            // console.log(columnSum)
          }
          answer = Math.max(answer, rowSum, columnSum)
        }

        rowSum = 0
        columnSum = 0
        for (let i = 0; i < arr.length; i++) {
          rowSum += arr[i][i]
          columnSum += arr[i][arr.length - 1 - i]
        }

        answer = Math.max(answer, rowSum, columnSum)

        return answer
      }

      let arr = [
        [10, 13, 10, 12, 15],
        [12, 39, 30, 23, 11],
        [11, 25, 50, 53, 15],
        [19, 27, 29, 37, 27],
        [19, 13, 30, 13, 19],
      ]
      console.log(solution(arr))
    </script>
  </body>
</html>
profile
매일 '어제의 나와 오늘의 나는 무엇이 다를까?'를 고민하는 김호엥입니다.

0개의 댓글