😎풀이

  1. 소수 판별 헬퍼 함수 정의
  2. 대각선 검사
    2-1. 우하향 대각선 요소 중 소수를 판별하여, 최댓값 갱신
    2-2. 좌하향 대각선 요소 중 소수를 판별하여, 최댓값 갱신
  3. 탐색된 최댓값 반환
function diagonalPrime(nums: number[][]): number {
    const n = nums.length
    let largest = -Infinity
    for(let i = 0; i < n; i++) {
        const dia1 = nums[i][i]
        const dia2 = nums[i][n - (i + 1)]
        if(isPrime(dia1)) largest = Math.max(largest, dia1)
        if(isPrime(dia2)) largest = Math.max(large st, dia2)
    }
    if(largest === -Infinity) return 0
    return largest
};

function isPrime(num: number) {
    if(num <= 1) return false
    if(num <= 3) return true
    if(num % 2 === 0) return false
    if(num % 3 === 0) return false
    for(let i = 5; i * i <= num; i += 6) {
        if(num % i === 0) return false
        if(num % (i + 2) === 0) return false
    }
    return true
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글