백준 1561(파이썬) - 놀이공원

resilient

·

2021. 4. 10. 20:39

728x90
반응형

www.acmicpc.net/problem/1561

 

1561번: 놀이 공원

첫째 줄에 N(1 ≤ N ≤ 2,000,000,000)과 M(1 ≤ M ≤ 10,000)이 빈칸을 사이에 두고 주어진다. 둘째 줄에는 각 놀이기구의 운행 시간을 나타내는 M개의 자연수가 순서대로 주어진다. 운행 시간은 1 이상 30

www.acmicpc.net

import sys
input = sys.stdin.readline

n,m = map(int,input().split())
data = list(map(int,input().split()))

start,end = 0,60000000000
time = 0
if n<m:
    print(n)
else:
    while start<=end:
        mid = (start+end)//2
        cnt =  m #t가 0초에는 다타고시작
        for i in range(m):
            cnt += mid//data[i]
        if cnt>=n: #애들많을때
            time = mid
            end = mid-1
        else:#애들 늘릴때
            start = mid+1
    #time 보다 1분전 탄애들수
    ans = m
    for i in range(m):
        ans += (time-1)//data[i]
    #time에 탄 애들cnt
    for i in range(m):
        if time % data[i] == 0:
            ans +=1
        if ans == n:
            print(i+1)
            break

end 값을 60000000000을 안하면 에러가나고

여기서 while안에 있는 for문안쪽에 if 문을 넣은 줄 몰라서 한참 삽질을 했다..

반응형