728x90
반응형
https://www.acmicpc.net/problem/15810
문제
전북대학교 프로그래밍 경진 대회에서는 ACM-ICPC 스타일을 따라 문제를 해결한 팀에게 그 문제에 해당하는 풍선을 달아준다.
풍선을 담당하는 N명의 스태프가 있다. 스태프마다 폐활량이 다르기 때문에 하나의 풍선을 만드는 데 걸리는 시간은 다양하다.
대회가 시작되고 운영진으로부터 M개의 풍선을 만들어 달라는 의뢰가 들어왔다!
각 스태프가 풍선 하나를 만드는 시간(분) Ai를 알고 있을 때, 풍선 M개를 만들기 위해서 최소 몇 분이 걸릴까?
풍선을 만든 후에 문제를 표시할 것이기 때문에 풍선의 종류는 상관이 없다.
모든 스태프는 풍선을 만드는 데에 정확하게 자신이 말한 시간만큼 걸린다. 예를 들어 스태프 A가 풍선 하나를 만드는 데 5분이 걸린다면, 0분에 만들기 시작해서 5분에 끝난다.
입력
스태프의 수 N과 풍선의 개수 M이 입력된다. (1 ≤ N, M ≤ 1 000 000)
다음 줄에 N명의 각 스태프들이 풍선 하나를 만드는 데 걸리는 시간 Ai가 순서대로 주어진다. Ai는 1 000 000 이하의 자연수이다.
출력
M개의 풍선이 다 만들어지는 최소 시간을 출력한다.
풀이
Code
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
array = list(map(int, input().split()))
# 1. left, right 설정
left, right = 0, m * max(array)
# 2.
while left <= right :
# 2-1. mid 값 설정
mid = (left + right) // 2
# 2-2. 해당 시간 동안 만들 수 있는 풍선 계산
count = 0
for x in array : count += mid // x
# 2-3. 만들어진 풍선 수가 m보다 작을 경우
if count < m : left = mid + 1
# 2-4. 만들어진 풍선 수가 m보다 크거나 같을 경우
else : right = mid - 1
# 3. 결과 출력
print(left)
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python/BOJ] 10819. 차이를 최대로 (0) | 2023.08.11 |
---|---|
[Python/BOJ] 1699. 제곱수의 합 (0) | 2023.08.11 |
[Python/BOJ] 1793. 타일링 (0) | 2023.08.10 |
[Python/BOJ] 16401. 과자 나눠주기 (0) | 2023.08.10 |
[Python/BOJ] 1421. 나무꾼 이다솜 (0) | 2023.08.09 |