반응형
2805번: 나무 자르기
첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보
www.acmicpc.net
이분 탐색 나무 자르기 문제 입니다.
M미터의 나무의 값을 찾기위해 시작값과 끝값의 범위를 중간값을 기준으로 확장, 축소하며 M미터가 가능한 최소값을 찾았습니다.
문제 풀이(파이썬)
import sys
N, M = map(int, input().split())
tree = list(map(int, input().split()))
res = 0
lt = 0
rt = max(tree)
mid = 0
while lt+1<rt:
mid = (rt+lt) // 2
res_tmp = 0
for t in tree:
if t>mid:
res_tmp = res_tmp + (t-mid)
if res_tmp == M:
lt = mid
break
elif res_tmp > M:
lt = mid
elif res_tmp < M:
rt = mid
print(lt)
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] 정렬 - 가장 큰 수(파이썬 문제 풀이) (0) | 2021.03.18 |
---|---|
[프로그래머스] 정렬 - K번째 수(파이썬 문제 풀이) (0) | 2021.03.17 |
[ BOJ ] 백준 2512 - 예산(파이썬 문제 풀이) (0) | 2021.03.14 |
[ BOJ ] 백준 2750 - 수 정렬하기(파이썬 문제 풀이) (0) | 2021.03.13 |
[ Algorithm ] 온라인 코딩 테스트 준비하기(온라인 코딩 테스트 사이트, 온라인 개발 환경, 복잡도란) (0) | 2020.10.21 |
댓글