[TIL] 99클럽 코테 스터디 23일차 TIL + 오늘의 학습 키워드

2024. 6. 12. 11:02·TIL

 

* 오늘의 학습 키워드 : 이분탐색(Binary Search)

 - 정렬된 배열이나 리스트에서 특정 값을 찾을 때 사용하는 알고리즘, 반으로 나누는 전략을 사용하여 검색 범위를 좁혀나간다.

  • 핵심 개념
    • 시작 인덱스와 끝 인덱스를 설정하고 중간 인덱스를 계산합니다. 중간 인덱스의 값과 결과값을 비교합니다.
      • 일치 : 인덱스를 반환
      • 작다 : 중간 인덱스 값이 결과값보다 작으면, 오른쪽 절반에 있으므로 low = mid + 1로 설정
      • 크다 : 중간 인덱스 값이 결과값보다 크면, 왼쪽 절반에 있으므로 high = mid - 1로 설정
    • Lower Bound 접근법 : 특정 값 이상이 처음 나타나는 위치를 찾는 이분 탐색
    • Upper Bound 접근법 : 특정 값보다 큰 값이 나타나는 위치를 찾는 이분 탐색

* leetcode 1011. Capacity To Ship Packages Within D Days : https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/description/

class Solution {
    public int shipWithinDays(int[] weights, int days) {
        int right = 0; //모든 수의 합
        for(int weight : weights) right += weight;
        int left = 1;
        right += 1;

        while(left < right) {
            int mid = left + (right - left)/2;
            if(canShip(weights, days, mid)){
                right = mid;
            } else {
                left = mid+1;
            }
        }
        return left;
    }

    private boolean canShip(int[] weights, int days, int weightMax) {
        int current = 0;
        int currentDays = 1;
        for(int weight : weights) {
            if(weight > weightMax) return false;
            if(current + weight > weightMax) {
                currentDays++; // 다음날 적재
                current = weight;
            } else {
                current += weight; //계속 적재
        	}
        }
        return currentDays <= days;
    }
}

'TIL' 카테고리의 다른 글

[TIL] 백준 1326 - 폴짝폴짝 ( python )  (0) 2025.03.03
[TIL] 백준 4779 칸토어 집합  (1) 2024.09.08
[TIL] 99클럽 코테 스터디 21일차 TIL + 오늘의 학습 키워드  (1) 2024.06.10
[TIL] 99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드  (0) 2024.05.22
[TIL] 99클럽 코테 스터디 1일차 TIL + 오늘의 학습 키워드  (0) 2024.05.21
'TIL' 카테고리의 다른 글
  • [TIL] 백준 1326 - 폴짝폴짝 ( python )
  • [TIL] 백준 4779 칸토어 집합
  • [TIL] 99클럽 코테 스터디 21일차 TIL + 오늘의 학습 키워드
  • [TIL] 99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드
밀27
밀27
  • 밀27
    밀2
    밀27
    • 분류 전체보기 (35)
      • Git (1)
      • AWS (1)
      • Flutter (3)
      • Spring (3)
      • MariaDB (2)
      • TIL (25)
      • Daily (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
밀27
[TIL] 99클럽 코테 스터디 23일차 TIL + 오늘의 학습 키워드

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.