티스토리 뷰
728x90
문제
https://www.acmicpc.net/problem/2343
풀이 및 소스코드
여기서 한가지 자칫 실수할 것이
7 6
100 400 300 100 500 101 400
답: 500
이 반례이다.
나같은 경우에는 테케만 보고 맨끝이 제일 긴 비디오라 생각하여서 시작을 배열의 끝인 400부터 start로 잡고 갔는데,
이러한 반례가 존재한다.
따라서 리스트의 최대값을 찾고, 그것을 start로 해주고, end는 리스트의 총합을 넣어준다.
또한,
블루레이의 최솟값을 찾기위해 값을 비교할 때, 리스트의 최대값보다 작다면 결과값에 넣지 않도록 조건을 넣어주는 것이 중요하다.
if(mid >= max(video)):
res = min(res, mid)
바로 이부분 !!!
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
video = list(map(int, input().split()))
vm = max(video)
start = vm
end = sum(video)
res = 10**9
while(start <= end):
mid = (start+end)//2
cnt = 1
tmp = 0
for i in range(n):
if(tmp+video[i] <= mid):
# 만약 현재 블루레이에 비디오를 더 넣을 수 있다면
tmp += video[i]
else:
cnt += 1
tmp = video[i]
if(cnt > m):
break
if(cnt > m):
start = mid+1
else:
end = mid-1
if(mid >= vm):
res = min(res, mid)
print(res)
반응형
'Coding - Algo > python' 카테고리의 다른 글
[백준] 2110번:공유기 설치 (Python 파이썬) (0) | 2021.08.23 |
---|---|
[백준] 11657번:타임머신 (Python 파이썬) (0) | 2021.08.11 |
[백준] 14496번:그대, 그머가 되어 (Python 파이썬) (0) | 2021.08.11 |
[백준] 1926번:그림 (Python 파이썬) (0) | 2021.08.03 |
[백준] 1068번:트리 (Python 파이썬) (0) | 2021.08.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준파이썬
- 우분투
- swea 4070 타일링
- SSAFY
- poker swea
- swea 1240 자바
- 프로그래머스 자바
- 백준
- 프로그래머스
- 삼성청년SW아카데미
- swea 타일링
- 프로그래머스 파이썬
- 메뉴리뉴얼 풀이
- 파이썬
- yoloV3
- SWEA
- 파이썬 풀이
- 백준 17144
- swea 타일링 자바
- 백준 풀이
- 타일링 자바
- 백준 dp 문제
- swea 1240
- ubuntu
- 1240 자바
- 3996 자바
- 프로그래머스 더 맵게
- 더 맵게
- union-find
- 1699 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함