문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
서로 다른 숫자로 된 m x n 행렬이 주어졌을 때, 순서에 상관없이 행렬에 있는 모든 행운의 숫자를 반환해라.
행운의 숫자는 행렬해서 각 행의 최소값이고 각 열의 최대값인 원소이다.
#1
Input: matrix = [[3, 7, 8], [9, 11, 13], [15, 16, 17]]
Output: [15]
Explanation: 15는 해당 행에서 최소값이고 해당 열에서 최대값이라서 유일한 행운의 숫자이다.
#2
Input: matrix = [[1, 10, 4, 2], [9, 3, 8, 7], [15, 16, 17, 12]]
Output: [12]
Explanation: 12는 해당 행에서 최소값이고 해당 열에서 최대값이라서 유일한 행운의 숫자이다.
#3
Input: matrix = [[7, 8], [1, 2]]
Output: [7]
Explanation: 7은 해당 행에서 최소값이고 해당 열에서 최대값이라서 유일한 행운의 숫자이다.
class Solution {
public List<Integer> luckyNumbers(int[][] matrix) {
int N = matrix.length;
int M = matrix[0].length;
int rln = Integer.MIN_VALUE;
for(int i = 0; i < N; i++){
int rMin = Integer.MAX_VALUE;
for(int j = 0; j < M; j++){
rMin = Math.min(rMin, matrix[i][j]);
}
rln = Math.max(rln, rMin);
}
int cln = Integer.MAX_VALUE;
for(int i = 0; i < M; i ++){
int cMax = Integer.MIN_VALUE;
for(int j = 0; j < N; j++){
cMax = Math.max(cMax, matrix[j][i]);
}
cln = Math.min(cln, cMax);
}
if(rln == cln){
return new ArrayList<>(Arrays.asList(rln));
}
return new ArrayList<>();
}
}