-
2805번 아기 상어알고리즘/BOJ 2024. 3. 28. 00:09
https://www.acmicpc.net/problem/2805
아이디어
1. M의 숫자가 크기 때문에 O(n)으로 찾으면 시간 오류
2. 이분탐색으로 구현
N, M = list(map(int, str(input()).split(" "))) tree_list = list(map(int, str(input()).split(" "))) low = 0 hight = max(tree_list) answer = 0 def get_remain_tree(tree_list, limit): res = 0 for tree in tree_list: temp_tree = tree - limit if temp_tree > 0: res += (tree - limit) return res while True: if low > hight: break mid = (low + hight) // 2 temp = get_remain_tree(tree_list, mid) if temp >= M: answer = max(answer, mid) low = mid + 1 else: hight = mid - 1 print(answer)
'알고리즘 > BOJ' 카테고리의 다른 글
2110 공유기 설치 (0) 2024.03.30 10815 숫자 카드 (0) 2024.03.30 10816 숫자 카드 2 (0) 2024.03.26 [BOJ]17142번 연구소3 (0) 2020.08.17 [BOJ]17143번 낚시왕 (0) 2020.08.17