2차원 배열 - 격자판 최대합
2024. 1. 11. 14:52ㆍ알고리즘
격자판 각 행의 합, 각 열의 합, 두 대각선의 합 중에 가장 최대값을 구하는 문제이다.
문제에 나와있는대로 각 행의 합 중에 최댓값을 구하고, 각 열의 값들이 모아있는 배열을 만든 후 최댓값을 구하고
각각의 대각선의 합을 구한 뒤에 가장 큰 값을 구해주면 된다.
정답은 맞추었지만 행렬의 개념에 오류가 있다는 것을 깨달았다.
0 | 1 | 2 | 3 | 4 |
1 | ||||
2 | ||||
3 | ||||
4 |
네모 안에 있는 숫자는 인덱스이다.
2차원 배열로 행렬을 표현할 때 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 |
예를 들어 다음과 같이 요소가 저장되어 있을때,
arr[2][3]은 53이 된다. 2번째 행의 3번째 열의 요소가 되기 때문이다.
function solution(arr) {
let answer = 0;
let n = arr.length;
let sum1 = 0; // 각 행의 합, 대각선1의 합
let sum2 = 0; // 각 열의 합, 대각선2의 합
for (let i = 0; i < n; i += 1) {
sum1 = 0;
sum2 = 0;
for (let j = 0; j < n; j += 1) {
sum1 += arr[i][j];
sum2 += arr[j][i];
}
answer = Math.max(answer, sum1, sum2);
}
sum1 = 0;
sum2 = 0;
for (let i = 0; i < n; i += 1) {
sum1 += arr[i][i];
sum2 += arr[i][n - i - 1];
}
answer = Math.max(answer, sum1, sum2);
return answer;
}
'알고리즘' 카테고리의 다른 글
브루트 포스 - 멘토링 (0) | 2024.01.12 |
---|---|
2차원 배열 - 봉우리 (2) | 2024.01.11 |
브루트 포스 - 블랙잭 (0) | 2024.01.10 |
점근적 표기 1 (1) | 2024.01.10 |
시간 복잡도 (1) | 2024.01.10 |