[백준] 2805: 나무 자르기 (파이썬, 이분 탐색)

2024. 9. 23. 23:48·코딩테스트/BOJ

https://www.acmicpc.net/problem/2805

▶ 구해야하는 것

  • 입력: 나무의 수: N, 자를 나무의 총 길이: M (나무의 길이는 최대 2억...)
             N개의 나무의 높이 (1억 보다 작거나 0이상이다)
  • 출력: 적어도 M만큼 가져가기 위해 설정한 높이의 최댓값(H)을 찾는다.!!

▶ 풀이 탐색

O(log H): 나무의 높이(H)를 이분 탐색한다.

O(N): 각 나무마다 잘릴 수 있는지 확인한다.

총 O(NlogH)의 시간 복잡도가 소요된다. 약 천만 이므로 시간 제한에 어긋나지 않음


아이디어:

 목재절단기 H가 클수록 가져갈 수 있는 나무 길이는 작아지고,  H가 작을수록 커진다.

  1. 적절한 높이(H)를 찾을 때까지 이진탐색을 수행하며 반복해서 H를 조정한다.
  2. 현재 이 높이로 자르면 조건을 만족할 수 있는가를 확인한 후에 조건의 만족 여부에 따라 탐색 범위를 좁힌다.
  3. 중간값을 최적화한다.

▶ 코드 설계

import sys
from bisect import bisect_left, bisect_right

N, M = map(int, sys.stdin.readline().split())
trees = list(map(int, sys.stdin.readline().split()))

start = 0
end = max(trees)

while(start <= end):
    total = 0
    mid = (start + end) // 2
    for x in trees:
        if x > mid:
            total += x - mid
    if total < M:
        end = mid - 1
    else:
        start = mid + 1
        result = mid

print(result)

 

▶ 추가 풀이

 

 

'코딩테스트 > BOJ' 카테고리의 다른 글

[백준]27737번: 버섯농장  (0) 2024.10.10
[백준] 1326: 폴짝폴짝 (파이썬)  (0) 2024.10.07
[백준] 17266: 어두운 굴다리 (파이썬, 이분 탐색)  (0) 2024.09.23
[백준] 2839번: 설탕 배달 (파이썬)  (0) 2024.09.21
[백준] 4963번: 섬의 개수  (0) 2024.09.10
'코딩테스트/BOJ' 카테고리의 다른 글
  • [백준]27737번: 버섯농장
  • [백준] 1326: 폴짝폴짝 (파이썬)
  • [백준] 17266: 어두운 굴다리 (파이썬, 이분 탐색)
  • [백준] 2839번: 설탕 배달 (파이썬)
뚱이, not a starfish
뚱이, not a starfish
M.S. Student,. Mainly interested in computer vision and autonomous cars
  • 뚱이, not a starfish
    Wilbur-Babo
    뚱이, not a starfish
  • 전체
    오늘
    어제
    • 분류 전체보기 (194)
      • 통신 및 네트워크 (12)
      • Embedded Projects (2)
      • 3D Reconstruction (1)
        • Gaussian Splatting (0)
        • 3D-GS (1)
        • Multi-view Geometry (0)
        • VSLAM (0)
        • Computer Graphics (0)
      • LLM(VLM) (0)
      • AI-Study (28)
        • Mono-Depth (7)
        • Base (2)
        • Computer Vision (1)
        • Image Processing (3)
        • Tiny Object Detection (3)
      • 자율주행 (20)
        • [2023] 1-fifth AA EV (4)
        • [2022] 1-tenth AA EV (2)
        • ROS 1,2 (4)
        • 이론 (7)
        • 실습 (3)
      • Pointcloud (0)
      • sw (16)
        • 정보보안 (1)
        • Android_develop (3)
      • [학부] 전기전자공학 (12)
        • 반도체 (2)
        • 마이크로프로세서 (6)
      • 코딩테스트 (22)
        • BOJ (21)
      • 취준 (21)
        • EVS37 Ambassador (5)
        • 차량 제어 플랫폼 (5)
        • 영어 (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    tar 파일
    자율주행경진대회
    오블완챌린지
    현차 3월 자율주행
    software defined vehicle
    헤네스
    rc카
    심포지움
    자율주행작품
    evs37 sdv
    현대자동차 자율주행
    우분투터미널
    현대자동차 자율주행 서류 합격 후기
    오픽후기
    자율주행
    tar압축풀기
    현차떨
    헤네스유아용자동차
    EVS37
    현대자동차최종면접결과
    현대자동차 연구개발
    자율주행자동차
    자율주행시험
    현차 3월 신입 서류
    evs37sdv
    현대차3월신입후기
    현대자동차 서류합격후기
    현차 자율주행
    현대자동차최종불합
    정렬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
뚱이, not a starfish
[백준] 2805: 나무 자르기 (파이썬, 이분 탐색)
상단으로

티스토리툴바