https://www.acmicpc.net/problem/3216
3216번: 다운로드
첫째 줄에, 다운로드 시작하고 몇 초 후에 노래를 듣기 시작하면, 끊김 없이 들을 수 있는지 출력한다. 그러한 시간이 여러개라면, 가장 빠른 것을 출력한다.
www.acmicpc.net
문제
택희는 인터넷에서 노래를 다운받으려고 한다. 노래는 여러 조각으로 나누어져 있고, 정해진 순서대로 다운받아야 한다. 택희는 각 조각의 노래 길이와 다운로드 길이를 알고 있다.
택희는 노래를 모두 다운받기 전에 들으려고 한다. 음악이 중간에 끊여지면 분위기를 망치기 때문에, 한 번 듣기 시작하면 노래는 멈추지 않고 끝까지 재생해야 한다. 각 조각을 들으려면 그 조각을 모두 다운로드해야 들을 수 있다.
택희가 음악을 끊김없이 들으려면, 다운로드 시작한 지 몇 초 후에 들으면, 끊김 없이 노래를 들을 수 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 조각의 수 N이 주어진다. (1 ≤ N ≤ 100,000)
다음 N개의 줄에는 노래의 길이 D와 다운로드하는데 걸리는 시간 V가 주어진다. (1 ≤ D,V ≤ 1000)
출력
첫째 줄에, 다운로드 시작하고 몇 초 후에 노래를 듣기 시작하면, 끊김 없이 들을 수 있는지 출력한다. 그러한 시간이 여러 개라면, 가장 빠른 것을 출력한다.
해결방법
"모든 노래를 한 번에 끊기지 않고 들어야 한다. 그러려면 다운로드를 시작하고 몇 초후에 노래를 들어야 하는가"가 이 문제이다. 처음에 문제 이해가 잘 안 돼서 한 줄로 써보았다.
1. 노래를 듣기 위해선 다운로드가 필요하다.
2. 다운로드를 위한 시간이 필요하다.
3. 다운로드를 위한 시간은 이전 노래의 다운로드 시간보다 노래시간이 길거나 처음에 시작을 늦춘 경우 얻을 수 있다.
(이전 노래의 시간 - 이전 노래의 다운로드 시간)이 현재 노래의 다운로드 시간보다 커야한다. 그래야 문제의 조건을 만족한다.
(이전 노래의 시간 - 이전 노래의 다운로드 시간) >= 현재 노래의 다운로드 시간
아래 입력의 경우
2
2 1
1 5
2 - 1 >= 5
1 >= 5 => 5 - 1 = 4
문제를 만족하려면 다운로드를 시작하고 4초 뒤에 노래를 들어야 한다.
예제 1의 경우
4
2 1
1 5
3 3
2 4
1 >= 5 => 4
1 + (-4) >= 3 => 6
1 + (-4) + 0 >= 4 => 7
문제를 만족하려면 다운로드를 시작하고 7초 뒤에 노래를 들어야 한다.
예제 2의 경우
5
1 1
1 2
3 1
2 1
3 3
0 >= 2 => 2
0 + (-1) >= 1 => 2
0 + (-1) + 2 >= 1 => 0
0 + (-1) + 2 + 1 >= 3 => 1
문제를 만족하려면 다운로드를 시작하고 2초 뒤에 노래를 들어야 한다.
'알고리즘 > 백준' 카테고리의 다른 글
19539번 : 사과나무 (0) | 2023.07.31 |
---|---|
24938번 : 키트 분배하기 (0) | 2023.07.31 |
14502번 연구소 (0) | 2023.06.20 |
오큰수 (0) | 2023.06.14 |
11660번 : 구간 합 구하기 5 (0) | 2023.01.13 |