[99클럽] 코테 스터디 22일차 TIL - 이분탐색(1351. Count Negative Numbers in a Sorted Matrix)

2024. 6. 11. 22:57·코딩 테스트/99클럽

문제

문제 설명

행, 열 모두 내림차순으로 정렬된 2차원 배열이 주어진다.
배열에서 음수의 개수를 반환하라.

예시

  • Example 1:
    Input: grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]
    Output: 8
    Explanation: There are 8 negatives number in the matrix.
  • Example 2:
    Input: grid = [[3,2],[1,0]]
    Output: 0제약 조건
  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 100
  • -100 <= grid[i][j] <= 100

풀이 방법

풀이 로직

  • 이분탐색 알고리즘 이용
  1. 각 행에서 이분 탐색 알고리즘을 이용하여 음수를 찾는다.
  2. 음수를 찾았다면 mid ~ 오른쪽 부분을 모두 음수로 처리하고 왼쪽 부분을 이분 탐색한다.
  3. 1, 2번 과정을 반복하다 행의 끝부분까지 모두 탐색했다면 다음 행으로 넘어간다.

코드

  • 반복문 방식
/** 반복문
 - 각 행을 탐색(for(grid.length))하고 각 행의 끝부분까지만 탐색(while(start > end))한다. */

class Solution {
    public int countNegatives(int[][] grid) {
        int result = 0;

        for (int i = 0; i < grid.length; i++) {
            int start = 0; 
            int end = grid[i].length-1; // 4

            // 행의 끝부분 까지만 탐색
            while (start <= end) {
                int mid = (start + end) / 2;

                // mid가 음수인 경우 -> mid~오른쪽 부분 음수로 처리 && 왼쪽 부분 이분탐색
                if (grid[i][mid] < 0) { 
                    result += end - mid + 1;
                    end = mid-1;
                }

                // mid == 양수 or 0 -> 오른쪽 부분 이분탐색
                else
                    start = mid + 1;
            }
        }
        return result;
    }
}

오늘 회고

엄청 쉬운 문제인데도 조금 헤멨다.
이런 쉬운 문제를 바로 풀지 못했다는 게 너무 아쉽다.
그래도 풀었으면 된거지

'코딩 테스트 > 99클럽' 카테고리의 다른 글

[99클럽] 코테 스터디 23일차 TIL - 그래(1791. Find Center of Star Graph)  (0) 2024.06.14
[99클럽] 코테 스터디 25일차 TIL - 배열(1470. Shuffle the Array)  (0) 2024.06.14
[99클럽] 코테 스터디 21일차 TIL - 이분탐색(35. Search Insert Position)  (0) 2024.06.10
[99클럽] 코테 스터디 20일차 TIL - DP(1277. Count Square Submatrices with All Ones)  (0) 2024.06.10
[99클럽] 코테 스터디 19일차 TIL - DP(1043. Partition Array for Maximum Sum)  (0) 2024.06.08
'코딩 테스트/99클럽' 카테고리의 다른 글
  • [99클럽] 코테 스터디 23일차 TIL - 그래(1791. Find Center of Star Graph)
  • [99클럽] 코테 스터디 25일차 TIL - 배열(1470. Shuffle the Array)
  • [99클럽] 코테 스터디 21일차 TIL - 이분탐색(35. Search Insert Position)
  • [99클럽] 코테 스터디 20일차 TIL - DP(1277. Count Square Submatrices with All Ones)
토자맨
토자맨
  • 토자맨
    개발하는 토자맨
    토자맨
  • 전체
    오늘
    어제
    • 개발 공부
      • 코딩 테스트
        • 코드업 기초 100제
        • 백준
        • 99클럽
        • 자료구조
        • 알고리즘
      • Programming Language
        • 자바(JAVA)
      • Back-end
        • Spring
      • Front-end
        • html
        • css
      • DevOps
        • AWS
        • CI CD
        • Docker
        • 홈서버
        • Git
      • Computer Science
        • 자료구조
        • 알고리즘
        • 운영체제
        • OS,Network,DB,DesignPattern
      • 프로젝트
        • 웨이트 쇼핑몰
      • 공부 로드맵
        • 2학년 겨울방학
        • 3학년 2학기
        • 3학년 겨울방학
      • 일상
        • 기타 정보
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    이진탐색 #이분탐색 #알고리즘
    dfs #알고리즘
    백준 #아기상어2 #bfs
    백준 #dp #동적계획법
    nvidia container toolkit #
    bfs #프로그래머스
    dfs #백준
    싱글톤 패턴 #싱글톤 컨테이너 #싱글톤 레지스트리 #싱글톤 객체 상태 #무상태 #stateless #유지상태 #staleful
    오블완
    피보나치 수 #백준 #dp
    git filter-repo
    solid #객체지향설계원칙
    백준 #dfs
    백준 #bfs
    bfs #백준
    프로그래머스 #dp
    스프링 #spring #스프링 컨테이너 #스프링 컨텍스트
    스프링핵심원리 #김영한 #의존관계자동주입 #의존관계 자동 주입
    ec2 멈춤 #ec2 터짐 #ec2 ssh 연결 끊김 #ec2 끊김
    백준 #이진탐색 #이분탐색
    백준 #dfs #알고리즘
    프로그래머스 #dfs
    bfs #최단거리탐색 #프로그래머스
    nvidia-docker #docker cuda #docker gpu #엔비디아 도커
    백준 #dfs #11725번
    git filter-branch #commit 수정 #commit
    티스토리챌린지
    99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #til
    이진탐색 #이분탐색 #백준
    dp #백준 #동적계획법
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
토자맨
[99클럽] 코테 스터디 22일차 TIL - 이분탐색(1351. Count Negative Numbers in a Sorted Matrix)
상단으로

티스토리툴바