코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

알고리즘/백준

3216번 : 다운로드

2023. 7. 30. 18:18

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
    '알고리즘/백준' 카테고리의 다른 글
    • 19539번 : 사과나무
    • 24938번 : 키트 분배하기
    • 14502번 연구소
    • 오큰수
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바