{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉큐〉공방 출하 일정← 이전다음 →
#048 · 큐중간큐 / 시뮬레이션

공방 출하 일정

문제

수제 공방은 계약서에 적힌 순서대로 품목을 만들어 납품합니다. 품목 i에 대해 현재 창고에 쌓인 수량 stock[i], 하루 생산량 daily[i], 계약 수량 targets[i]가 주어집니다.

수량이 계약 수량 이상이 되면 그 품목은 출하 준비가 끝납니다. 다만 납품 트럭은 계약서 순서대로만 물건을 싣기 때문에, 뒤 품목이 먼저 준비돼도 앞 품목이 끝날 때까지 창고에서 대기합니다. 앞 품목이 준비되는 날, 이미 준비를 마친 뒤 품목들도 한꺼번에 실립니다. 하루에 실을 수 있는 품목 수에는 제한이 없습니다.

출하가 이루어지는 날마다 몇 개 품목이 함께 나가는지 순서대로 배열에 담아 반환하세요.

function solution(stock: number[], daily: number[], targets: number[]): number[]

예시

stock daily targets 반환
[12,4,30] [4,9,5] [20,40,60] [1,1,1]
[5,18,2] [5,2,50] [45,24,80] [3]
[0,60,10,7] [3,4,1,20] [9,80,13,90] [1,3]
[2,40,15,50,9] [6,10,3,2,1] [50,95,30,60,20] [4,1]

두 번째 예시에서 각 품목의 준비 소요일은 8일, 3일, 2일입니다. 뒤 두 품목이 먼저 준비돼도 첫 품목을 기다렸다가 8일째에 셋이 함께 출하됩니다.

제약 조건

  • 1 ≤ stock.length ≤ 100
  • stock, daily, targets의 길이는 모두 같습니다
  • 0 ≤ stock[i] ≤ targets[i] ≤ 100,000 (이미 계약 수량을 채운 품목은 소요일 0일)
  • 1 ≤ daily[i] ≤ 1,000

시간 복잡도 목표: O(N)

테스트 케이스

예시 1: 소요일 2·4·6일로 하나씩 출하
입력: stock = [12,4,30], daily = [4,9,5], targets = [20,40,60]
출력: [1,1,1]
예시 2: 소요일 8·3·2일 → 8일째 한 번에 3개
입력: stock = [5,18,2], daily = [5,2,50], targets = [45,24,80]
출력: [3]
예시 3: 소요일 3·5·3·5일 → [1,3]
입력: stock = [0,60,10,7], daily = [3,4,1,20], targets = [9,80,13,90]
출력: [1,3]
예시 4: 소요일 8·6·5·5·11일 → [4,1]
입력: stock = [2,40,15,50,9], daily = [6,10,3,2,1], targets = [50,95,30,60,20]
출력: [4,1]
엣지: 품목 하나 → [1]
입력: stock = [7], daily = [2], targets = [20]
출력: [1]
엣지: 첫 품목은 이미 계약 수량 충족(0일)
입력: stock = [10,3], daily = [5,1], targets = [10,6]
출력: [1,1]
소요일이 모두 5일로 같음 → [3]
입력: stock = [1,2,3], daily = [1,2,3], targets = [6,12,18]
출력: [3]
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.