시제품 공방에는 성능이 서로 다른 3D 프린터 N대가 있습니다. 모든 프린터는 시각 0에 동시에 전원이 켜지고, 켜진 뒤 예열 이 끝나야 출력을 시작할 수 있습니다.
i번 프린터는
preheat[i]분 동안 예열합니다. 예열 중에는 아무것도 만들지 못합니다.perUnit[i]분씩 걸리며, 쉬지 않고 계속 반복합니다.즉 시각 t에 i번 프린터가 완성해 둔 부품 수는
t > preheat[i]이면 floor((t - preheat[i]) / perUnit[i]), 그렇지 않으면 0입니다.
모든 프린터가 만든 부품을 합쳐 target개 이상 이 되는 가장 이른 시각을 반환하는
solution(preheat, perUnit, target) 함수를 작성하세요. 반환값의 단위는 분입니다.
preheat=[0,0], perUnit=[3,5], target=4 → 9
시각 8: 0번 2개(6분·3분 소요분) + 1번 1개 = 3개 → 부족
시각 9: 0번 3개 + 1번 1개 = 4개 → 달성
preheat=[10,2], perUnit=[1,7], target=5 → 14
0번은 시각 10부터 1분에 1개, 1번은 시각 2부터 7분에 1개.
시각 13: 0번 3개 + 1번 1개 = 4개 → 부족
시각 14: 0번 4개 + 1번 1개 = 5개 → 달성
preheat=[7,7,7], perUnit=[2,2,2], target=10 → 15
시각 14에는 프린터마다 3개씩 총 9개로 부족하고,
시각 15에 4개씩 총 12개가 되어 처음으로 10개를 넘어섭니다.preheat.length == perUnit.length == N, 1 ≤ N ≤ 100,000preheat[i] ≤ 1,000,000,000perUnit[i] ≤ 1,000,000target ≤ 1,000,000,000시간 복잡도 목표: O(N log(최대 시각))
▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.