Delete Greatest Value in Each Row

-
문제 풀이
- 주어진 각 행에 대해 큰값부터 제거할때 행이 2개일땐 그 값중 큰값을 제거하며 그외에는 그냥 큰값을 그 값을 answer에 더해주는 문제이다.
-
풀이 소스
class Solution {
public int deleteGreatestValue(int[][] grid) {
for(int[]arr : grid){
Arrays.sort(arr);
}
int sum= 0;
for(int i=grid[0].length-1; i>= 0; i--){
int max = 0;
for(int[]arr : grid){
max = max > arr[i] ? max : arr[i];
}
sum+=max;
}
return sum;
}
}
오늘의 회고
문제 시도 및 해결
- 단순히 for문을 통해 주어진 2차원 배열을 우선 정렬 후 각 행에 대한 큰값을 가져오도록 한다.
- for문을 통해 오름차순한 배열에 대해 grid[0].length부터해서 --하여 큰값을 비교한다.
- 이때 2차원 배열안에 길이에 따라 유동적으로 변해야함으로 2중 for문을 사용했다.
- 그 후 2차원 배열에 있는 2행에 대한 max값을 구한 후 sum에 더해줬다.
학습 내용 및 회고
- 2차원 배열이 무조건 2개라는 생각으로 처음에 Math.max를 통해 문제를 해결할려고 했으나 Array Index Out of Bounds Exception 에러를 발생한것을 보고 조건을 확인했었다.
- 그리하여 1개일때도 있다는 조건을 확인하게 되어 if문으로 조건을 나눌려고 햇었는데 단순 for문을 통해 쉽게 해결할 수 있다는것을 알게되어 향상된 for문을 참고하게 되었다.
다음 배울것