티스토리 뷰
728x90
문제
https://www.acmicpc.net/problem/2343
2343번: 기타 레슨
강토는 자신의 기타 레슨 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 레슨이 들어가는데, 블루레이를 녹화할 때, 레슨의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경
www.acmicpc.net
풀이 및 소스코드
여기서 한가지 자칫 실수할 것이
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
- ubuntu
- 메뉴리뉴얼 풀이
- SWEA
- 우분투
- swea 타일링 자바
- 타일링 자바
- 파이썬 풀이
- 백준 dp 문제
- 삼성청년SW아카데미
- 프로그래머스 파이썬
- 백준
- 1240 자바
- swea 1240 자바
- 파이썬
- 프로그래머스
- 백준파이썬
- swea 타일링
- 백준 17144
- 프로그래머스 자바
- 1699 자바
- poker swea
- union-find
- 3996 자바
- SSAFY
- swea 4070 타일링
- 프로그래머스 더 맵게
- yoloV3
- 백준 풀이
- swea 1240
- 더 맵게
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함