https://www.acmicpc.net/problem/3216
왜 n번째 다운로드 완료 시간 - n-1번째 노래 길이 ←로 하면 틀리고 반복문을 돌려서 max값을 찾아야 하는지 이해 못했지만 마지막 누적합끼리라고 그 차이가 max는 아닌 걸 디버깅하고 알았음.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
// 노래를 들으려면 모두 다운로드 된 상태여야
// 다운로드 시작한지 몇 초후에 들어야 끊김없이 노래를 들을 수 있는지
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[][] songs = new int[n + 1][2];
for (int i=1; i <= n; i++) { // 누적해서 저장
StringTokenizer st = new StringTokenizer(br.readLine());
songs[i][0] = Integer.parseInt(st.nextToken()) + songs[i-1][0]; // 노래
songs[i][1] = Integer.parseInt(st.nextToken()) + songs[i-1][1]; // 다운로드
}
int ans = 0;
for (int i=n; i > 0; i--) {
// 현재 노래 다운로드 완료 시간 - 이전 노래 길이 == 현재 노래 다운로드 완료 후 재생 가능한 시점
ans = Math.max(ans, songs[i][1] - songs[i-1][0]);
}
System.out.println(ans);
}
}
728x90
'코딩테스트' 카테고리의 다른 글
[코드그루] 126. 백준 15658번 : 연산자 끼워넣기 (2) (2) | 2025.01.23 |
---|---|
[코드그루] 125. 백준 2792번 : 보석 상자 (2) | 2025.01.22 |
[코드그루] 123. 백준 2573번 : 빙산 (1) | 2025.01.21 |
[코드그루] 122. 백준 2343번 : 기타 레슨 (0) | 2025.01.17 |
[코드그루] 121. 백준 3088번 : 화분 부수기 (1) | 2025.01.15 |