📌강의 정리
행번호와 열번호를 생각한다.
arr[행][열] 이다.
Number.MIN_SAFE_INTEGER를 하면 최소값을 넣을 수 있다.
이중포문으로 행탐색 열탐색을 할수가 있다.
이제 sum1+=arr[i][j], sum2+=arr[j][i]를 하면 행의 총합, 열의 총합을 구할 수 있다.
처음 포문이 시작될때 섬1,섬2를 0으로 초기화하는 코드를 넣어주고
두번째 포문이 하나 끝날때마다 Math.max(answer, sum1, sum2)를 통해 answer에 최대값을 넣어준다.
그 다음 대각선을 계산하기위해 다시 포문을 이용한다.
이때 포문은 하나만 사용해도된다.
arr[i][i]는 오른쪽 아래로 가는 대각선이다.
또한 왼쪽 아래로 대각선은 arr[i][n-i-1]을 하면 구현가능하다.
격자무늬에 하나씩 세어봐서 규칙을 찾으면 쉽게 알 수 있다.
📌느낀점
문제를 풀긴했지만 강사님과 나의 코드중에서 어떤 것이 더 잘 풀어졌는지는 모르겠다.
강사님의 코드에서 눈여겨 볼점은 Number.MIN_SAFE_INTEGER 와 Math.max(answer, sum1, sum2)
이다.
특히 Math.max는 진짜 유용하게 잘 쓰일 수 있으므로 꼭 잘 알아둬야겠다.
//나의 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(arr){
let max = 0;
let tmp=0; let tmp2=0; let tmp3=0; let tmp4 = 0;
for(let i = 0; i<arr[0].length; i++){
for(let j = 0; j<arr[i].length; j++){
tmp += arr[i][j];
tmp2 += arr[j][i];
if(i === j) tmp3 += arr[i][j]
if(i+j === arr[0].length-1) tmp4 += arr[i][j]
}
if(max<tmp) max = tmp;
if(max<tmp2) max = tmp2;
if(max<tmp3) max = tmp3;
if(max<tmp4) max = tmp4;
tmp = 0; tmp2 = 0;
}
console.log(tmp3)
console.log(tmp4)
answer = max;
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>
//강사님 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<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>
</body>
</html>
'JS 알고리즘 문제풀이 > 섹션 2. 1, 2차원 배열 탐색' 카테고리의 다른 글
7.봉우리 (0) | 2022.01.13 |
---|---|
5.등수구하기 (0) | 2022.01.12 |
4.점수계산 (0) | 2022.01.12 |
3.가위바위보 (0) | 2022.01.12 |
2.보이는 학생 (0) | 2022.01.12 |