Count Negative Numbers in a Sorted Matrix
class Solution {
public int countNegatives(int[][] grid) {
// 이진 탐색을 통해 문제 풀이
// 음수 담을 변수 count 생성
int count = 0;
// for 문을 이용해 행마다 이진 탐색 실시
for (int[] row : grid) {
// 투 포인터를 사용해 left, right 생성해 각각 0, grid[i].length - 1 대입
int left = 0, right = row.length - 1;
// left가 right보다 항상 작거나 같다고 가정하고 반복
while (left <= right) {
// 이진 탐색을 통해 mid 를 left + (right - left) / 2 로 생성
int mid = left + (right - left) / 2;
// 만약 mid값이 0보다 작으면(음수이면) right를 mid-1로 설정 후 반복
if (row[mid] <0) {
right = mid - 1;
// 만약 mid가 음수가 아니면 left를 mid+1로 설정 후 반복
} else {
left = mid + 1;
}
}
// 이렇게 되면 결국 left는 첫 번째 음수의 인덱스가 들어가게 됨.
// 만약 음수가 없으면 left는 m의 크기가 됨.
// 즉, 음수의 개수는 m - left가 된다. 이 값을 count에 더해주면 됨.
count += row.length - left;
}
// count 리턴
return count;
}
}
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL