1203 알고리즘 문제풀이

알고리즘 문제풀이

N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력합니다.

function solution(arr){
 let answer = Number.MIN_SAFE_INTEGER;
 let row = 0 // 행
 let col = 0 // 열
 let n = arr.length
 for(let i=0; i < n; i++){
   col = row = 0
  for(let j=0; j < n; j++){
   col += arr[i][j]
   row += arr[j][i]
  }
   answer = Math.max(col,row,answer)
 }
  //대각선의 합
  let sum1 =0
  let sum2 =0
   for(let i=0;i<n;i++){
    sum1 += arr[i][i]
    sum2 += arr[i][n-1-i]
   }
  answer = Math.max(answer,sum1,sum2)
  return answer
}

행과 열의 합을 각각 구하고, 대각선의 합까지 구한후에 셋의합중 가장 큰 합을 Math.max 메서드를 이용해서 구해주면 된다. 수도코드를 요즘 꼼꼼하게 안썼더니 당황만 하게되는 것같다. 더 꼼꼼하게 쓰도록 하자.

그 외

parseInt랑 isNaN 메서드는 숫자가아니라 '1','3'이럴때도 숫자처럼 메서드를 사용할 수 있다

isNaN(1) //false
isNaN('1') //false

parseInt(0.02) //0
parseInt("0.02") //0

좋은 웹페이지 즐겨찾기