[파이썬/python] 백준 - 15801 풍선 공장

2025. 2. 5. 18:16·알고리즘
반응형

문제

https://www.acmicpc.net/problem/15810


문제 설명

  1. N명의 스태프와 M개의 풍선이 존재한다.
  2. N명의 각 스태프가 풍선 하나를 만드는 데 걸리는 시간 $A_i$가 주어진다.
  3. M개의 풍선이 다 만들어지는 최소 시간을 출력한다.

 


풀이

$N$명의 스태프가 M개의 풍선을 모두 만드는데 걸리는 시간을 완전탐색을 통해 검사해보자.

최악의 경우 $10^6$명의 스태프가 존재하고 각 스태프가 풍선을 만드는 데  $10^6$ 분이 걸린다.

그렇다면 $1$부터  $10^6$초까지 모두 탐색하며 모든 풍선이 만들어 질 수 있는지 확인해야 할 것이다.

따라서 최대 시간을 T라고 했을 때 시간복잡도는 $O(N*T) = O(10^6 * 10*6) = O(10^12)$이다.

문제에서 요구하는 시간인 1초를 초과하게 되므로 부합하지 않으므로 이분탐색을 통해 문제를 풀이했다.

 

  1. MAX값을 $N*T = 10^12$로 설정한다.
  2. 이분탐색을 통해 현재의 시간 T에 모든 풍선을 만들 수 있는지 검사한다.
    1. 현재 T를 각 스태프가 풍선 하나를 만들 수 있는 시간을 나누어 풍선의 개수를 더한다.
    2. 총 만들 수 있는 풍선의 개수가 M보다 적다면 s = mid, 만들 수 있다면 e = mid로 변경하여 범위를 줄인다.

코드

import sys
input = sys.stdin.readline
MAX = int(1e12)
N,M = map(int,input().split())
times = list(map(int,input().split()))

s = 0
e = MAX
while s+1 < e:
    mid = (s+e) // 2
    cnt = 0
    for time in times:
        cnt += (mid // time)
    if cnt < M:
        s = mid
    else:
        e = mid
print(e)

시간복잡도

  • 이분탐색의 시간복잡도는 $O(log_N)$
  • 내부에서 모든 시간을 탐색하므로 총 시간복잡도는 $O(log_N * T)$
  • 최악의 경우 $N = 10^6, T = 10^6$ 이므로 약 $O(20*10^6)  =O(10^7)$의 시간복잡도가 소요된다.
반응형

'알고리즘' 카테고리의 다른 글

[파이썬/python] 백준 - 10844 쉬운 계단 수  (0) 2025.02.07
[파이썬/python] 백준 - 10425 피보나치 인버스  (0) 2025.02.06
[파이썬/python] 백준 - 15965 K번째 소수  (1) 2025.02.04
[파이썬/python] 백준 19699 - 소-난다!  (0) 2025.02.03
[파이썬/python] 백준 6593 - 상범빌딩  (0) 2025.02.02
'알고리즘' 카테고리의 다른 글
  • [파이썬/python] 백준 - 10844 쉬운 계단 수
  • [파이썬/python] 백준 - 10425 피보나치 인버스
  • [파이썬/python] 백준 - 15965 K번째 소수
  • [파이썬/python] 백준 19699 - 소-난다!
개골개굴
개골개굴
굶고 코딩하기
  • 개골개굴
    밥스토리
    개골개굴
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (144)
      • 알고리즘 (124)
      • Java (2)
      • 자기개발 (18)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    OS
    컴퓨터 구조
    java
    컴퓨터구조
    completablefuture
    async
    SMTP
    작심삼일 챌린지
    알고리즘
    인프런
    springboot
    파이썬
    Redis
    python
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
개골개굴
[파이썬/python] 백준 - 15801 풍선 공장
상단으로

티스토리툴바