문제
2차원 배열의 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력하세요!
풀이
function solution(arr) {
let answer = Number.MIN_SAFE_INTEGER;
//answer는 비교 후 최댓값으로 업데이트 하기 위해 최솟값 정수로 초기화.
let leng = arr.length;
let sum1 = sum2 = 0;
//각 행의 합, 열의 합이 될 sum1,2도 0으로 초기화하여 선언
for (let i = 0; i < leng; i++) {
sum1 = sum2 = 0;
//안쪽 for문이 돌기 전, 이전 기록 초기화.
for (let j = 0; j < leng; j++) {
sum1 += arr[i][j];
//행이 i번째 일 때 그 행의 원소 j
sum2 += arr[j][i];
//열이 j번째 일 때 그 열의 원소 i
}
answer = Math.max(answer, sum1, sum2);
//i번째 반복의 행의 합을 이전 answer 값과 함께 비교 후, 최댓값을 새로운 answer에 업데이트.
}
sum1 = sum2 = 0;
//이전 기록 초기화
//대각선 정방향의 합과 역방향의 합
for (let i = 0; i < leng; i++) {
sum1 += arr[i][i];
//대각선 정방향일 때 원소의 위치는 행과 열이 같다.
sum2 += arr[i][leng - i - 1];
//대각선 역방향일 때, i번째 행의 원소의 열의 위치는 길이-현재 행-1(배열이 0부터 시작하기 때문)
}
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));
'Algorithm & 자료구조 > (인프런) 자바스크립트 알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘]숫자만 추출하기 (0) | 2022.01.31 |
---|---|
[알고리즘]2차원 배열의 사방 탐색 (0) | 2022.01.31 |
[알고리즘] 배열 등수 구하기 (Array.from) (0) | 2022.01.29 |
[알고리즘]중복 단어 제거 - 배열의 중복 제거 (filter, indexOf) (0) | 2022.01.27 |
[알고리즘] 중복 문자 제거 - indexOf, Set (0) | 2022.01.27 |