[LeetCode] Prime In Diagonal

아르당·3일 전

LeetCode

목록 보기
555/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

인덱스가 0부터 시작하고 2차원 정수 배열 nums가 주어진다
nums의 대각선에서 적어도 하나에 포함된 가장 큰 소수를 반환해라. 대각선에 소수가 없다면 0을 반환해라.

Example

#1
Input: nums = [[1, 2, 3], [5, 6, 7], [9, 10, 11]]
Output: 11
Explanation: 1, 3, 6, 9, 11이 대각선에 포함된 숫자이다. 11이 가장 큰 소수라서 11을 반환한다.

#2
Input: nums = [[1, 2, 3], [5, 17, 7], [9, 11, 10]]
Output: 17
Explanation: 1, 3, 9, 10, 17이 대각선에 포함된 숫자이다. 17이 가장 큰 소수라서 17을 반환한다.

Constraints

  • 1 <= nums.length <= 300
  • nums.length == numsi.length
  • 1 <= nums[i][j] <= 4 * 10^6

Solved

class Solution {
    public int diagonalPrime(int[][] nums) {
        int n = nums.length;
        int max = 0;

        for(int i = 0; i < n; i++){
            int main = nums[i][i];
            int sec = nums[i][n - 1 - i];
            
            if(main > max && isPrime(main)){
                max = main;
            }

            if(sec > max && isPrime(sec)){
                max = sec;
            }
        }

        return max;
    }

    private boolean isPrime(int n){
        if(n <= 1){
            return false;
        }

        for(int i = 2; i * i <= n; i++){
            if(n % i == 0){
                return false;
            }
        }

        return true;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글