-
JavaScript 알고리즘 | 22_바둑판 최대값 구하기(가로,세로,대각선)► JS Algorithm/Basic 2022. 9. 25. 22:39반응형
🔒 Q
바둑판의 모든 행의 합, 모든 열의 합, X방향의 대각선의 합 중 가장 큰 값을 구하세요.
🔒 ex
입력값 [11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[29, 28, 27, 26, 25],
[24, 23, 22, 21, 20],
[15, 18, 19, 14, 13]출력값 135 🔒 Solution
▼나의풀이
function solution(a) { let answer = Number; //정답 let table = a; //표 let allArr = []; //가로,세로,대각선 각각 합의 묶음 //각각 row행의 합 묶음 let horizontalLines = []; for (let i of table) { horizontalLines.push(i.reduce((a, b) => a + b)); } //각각 column열의 합 묶음 let verticalLines = []; let index = 0; for (let i = 0; i < table.length; i++) { let arr1 = []; for (let j = 0; j < table.length; j++) { arr1.push(table[j][index]); } verticalLines.push(arr1.reduce((a, b) => a + b)); index++; } // 대각선 합 (정방향original) let diagonalLine1 = Number; let arr2 = []; for (let i = 0; i < table.length; i++) { arr2.push(table[i][i]); } diagonalLine1 = arr2.reduce((a, b) => a + b); // 대각선 합 (역방향reverse) let diagonalLine2 = Number; let arr3 = []; for (let i = 0; i < table.length; i++) { arr3.push(table[i][table.length - i - 1]); } diagonalLine2 = arr3.reduce((a, b) => a + b); // 모든 합의 묶음과 비교 allArr.push( ...horizontalLines, ...verticalLines, diagonalLine1, diagonalLine2 ); answer = Math.max(...allArr); return answer; } const line1 = [11, 12, 13, 14, 15]; const line2 = [16, 17, 18, 19, 20]; const line3 = [29, 28, 27, 26, 25]; const line4 = [24, 23, 22, 21, 20]; const line5 = [15, 18, 19, 14, 13]; console.log(solution([line1, line2, line3, line4, line5]));
와.. 내가 풀었다는게 놀랍다. (2시간정도 걸렸다는게.... 함정스...... 나의 끈기와 노력에 감동의눙물)
중간에 코드 한줄은 구글의 도움을 받았지만.. 핳
와..수학 산수를 잘해야 알고리즘도 풀겠다 ... 를 느꼈다 ㅋㅋ구글의 도움받은 코드:
arr3.push(table[i][table.length - i - 1]);
table.length - i - 1 이공식은 대각선의 역방향 인덱스를 구하는건데,
내머리에서 절대 나올수 없지.... ㄱㅡ .. ㅋㅋ
▼나의풀이: '대각선 합' 부분을 2중포문으로 풀어보았다.// 대각선 합 (역방향reverse) let diagonalLine2 = Number; let arr3 = []; for (let i = 0; i < table.length; i++) { for (let j = 0; j < table.length; j++) { if (i + j === table.length - 1) { arr3.push(table[i][j]); } } } diagonalLine2 = arr3.reduce((a, b) => a + b);
반응형'► JS Algorithm > Basic' 카테고리의 다른 글
JavaScript 알고리즘 | 24_ 회문 찾기 (문자열 순서 반대로 바꾸기) (0) 2022.09.25 JavaScript 알고리즘 | 23_ 지뢰 찾기(배열 십자형태로 비교) (0) 2022.09.25 JavaScript 알고리즘 | 18_ 앞사람보다 큰 사람 선별(배열의 앞인덱스와 비교) (0) 2022.08.31 JavaScript 알고리즘 | 17_앞 숫자보다 작은 숫자 착출(배열의 앞 인덱스와 비교) (0) 2022.08.30 JavaScript 알고리즘 | 16_ 문자열 중에 중복된 단어 지우기 (0) 2022.08.30