2021/12/29) 6. 격자판 최대합 [1,2차원 탐색]
1. 문제
<격자판 최대합>
: N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력한다.
2. 해결 방법
- 변수 answer과 sum1과 sum2를 선언한다. 그리고 변수 n을 선언하여 배열의 길이로 초기화한다.
- 행이 0일 때, 열을 0,1,2,3,4 이동 반복. 그리고 sum1에 값 누적
열이 0일 때, 행을 0,1,2,3,4 이동 반복. 그리고 sum2에 값 누적.
그렇게 해서 answer, sum1, sum2값들의 최댓값(Math.max)을 answer에 대입.
대각선은, 행이 0일 때 열도 0, 행이 1일 때 열도 1. 이런식으로 코드 짜면 됨.
다른 대각선은 머리써서 직접 짜보기.- 첫 번째 for문 끝나고 나서, sum1과 sum2의 값을 0으로 초기화해주는 거 잊지 않기!
! 플러스 개념
-> 2차원 배열
- arr[행:가로][열:세로]
3. 정답
<script> function solution(arr){ let answer=Number.MIN_SAFE_INTEGER; let n=arr.length; let sum1=sum2=0; for(let i=0; i<n; i++){ sum1=sum2=0; for(let j=0; j<n; j++){ sum1+=arr[i][j]; sum2+=arr[j][i]; } answer=Math.max(answer, sum1, sum2); } sum1=sum2=0; for(let i=0; i<n; i++){ sum1+=arr[i][i]; sum2+=arr[i][n-i-1]; } answer=Math.max(answer, sum1, sum2); 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>
4. 내 코드와 비교 그리고 반성
2차원을 몰라서 노가다로 짤 수밖에 없었다. 그래서 짜다가 이건 아닌 거 같아서 그냥 정답을 봤다.
Author And Source
이 문제에 관하여(2021/12/29) 6. 격자판 최대합 [1,2차원 탐색]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@7lo9ve3/20211229-6.-격자판-최대합-12차원-탐색저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)