문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
인덱스가 0부터 시작하고 2차원 정수 배열 nums가 주어진다
nums의 대각선에서 적어도 하나에 포함된 가장 큰 소수를 반환해라. 대각선에 소수가 없다면 0을 반환해라.
#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을 반환한다.
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;
}
}