https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 이분탐색
  • 유니온 파인드
  • python3
  • DP
  • 재귀함수
  • 프로그래머스
  • 12015
  • 다이나믹 프로그래밍
  • Python
  • 그리디
  • BFS
  • 파이썬
  • 재귀
  • 큐
  • MST
  • counter
  • 다익스트라
  • DFS
  • 유클리드호제법
  • 백준
  • 그래프
  • heapq
  • 최단경로
  • 이분 탐색
  • 최소힙
  • 백트래킹
  • 스택
  • LIS
  • 최대공약수
  • 다이나믹프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

백준 2805 풀이 (나무 자르기, 이분 탐색)
알고리즘

백준 2805 풀이 (나무 자르기, 이분 탐색)

2021. 3. 22. 19:56

문제는 그냥 머랄까 톱이 하나 있고 높이를 정해서 일괄적으로 잘라버린다. 이후에 잘린 나머지의 값의 합이 m보다 크게 만드는 최댓값을 구하면된다.

이분 탐색으로 높이를 탐색하며 적절한 높이를 구하면된다. 저번 문제와 아주 유사해서 딱히 중요한게 없었다.

1. L과 R을 정한다.

2. mid값으로 일괄적으로 자르고 남은 값이 m보다 큰지 비교한다.

3. L과 R을 갱신한다.

n,m = map(int, input().split())
tree = list(map(int,input().split()))
l = 0
r = max(tree)
mid = (l+r+1)//2
while l != r:
    # clac
    sum = 0
    for t in tree:
        tmp = t - mid
        if tmp > 0:
            sum += (t-mid)
    if sum >= m:
        l = mid
    else:
        r = mid-1
    mid = (l+r+1)//2
print(mid)

이상하게 python3로 제출하면 시간초과가 나길래 도대체 무슨 문제인지 감을 못잡겠더라 예외 상황을 고민해봐도 안되길래 귀찮아서 pypy3로 제출해버렸다.

'알고리즘' 카테고리의 다른 글

백준 1300 풀이 (k번째 수, 이분 탐색)  (0) 2021.03.25
백준 2110 풀이 (공유기 설치, 이분 탐색)  (0) 2021.03.24
백준 1654 풀이 (랜선 자르기, parametric search, 파라매트릭 서치)  (0) 2021.03.21
백준 10816 풀이 (숫자 카드 2, 이분 탐색, 해쉬 사용, Counter)  (0) 2021.03.18
백준 1920 풀이 (수 찾기, 이분 탐색)  (0) 2021.03.18
    '알고리즘' 카테고리의 다른 글
    • 백준 1300 풀이 (k번째 수, 이분 탐색)
    • 백준 2110 풀이 (공유기 설치, 이분 탐색)
    • 백준 1654 풀이 (랜선 자르기, parametric search, 파라매트릭 서치)
    • 백준 10816 풀이 (숫자 카드 2, 이분 탐색, 해쉬 사용, Counter)
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바