Speeding Ticket

Hyoungtak (Alvin) Cha·2023년 1월 7일
0

말썽꾸러기 연정이는 오늘도 태우의 자동차를 몰래타고 신나게 도로를 달리는 중이다.

도로는 정확히 100km 이고, 연정이는 무조건 도로의 끝까지 달려야한다.

도로의 각 구간에는 제한속도를 지정해 두었으나 쿨한 연정이는 속도 위반에는 개의치 않아 (더군다나 자신의 차도 아니므로) 자신이 원하는 속도로 달린다.

도로는 N개의 구간으로 나뉘며 각 구간에는 도로 길이와 해당 도로의 제한속도가 주어진다.

도로 N개의 총 합은 100km 이며 각 구간별 도로 길이와 제한 속도는 모두 양의 정수이다. 예를 들어, N이 3이고 (40, 75), (50, 35), (10, 45) 이라면

첫 구간의 도로 길이는 40km, 제한속도는 75km/h
두 번째 구간의 도로 길이는 50km, 제한 속도는 35km/h
세 번째 구간의 도로 길이는 10km, 제한 속도는 45km/h
연정이가 달린 도로 또한 M 개 구간으로 나뉘며 각 구간에는 도로 길이와 연정이가 달린 속도가 주어진다.

M 개의 도로 총 합은 100km 이며 각 구간별 도로 길이와 달린 속도는 모두 양의 정수이다. 예를 들어 M 이 3이고 (40, 76), (20, 30), (40, 40) 이라면

첫 구간에서 연정이가 달린 도로 길이는 40km, 달린 속도는 76km/h
두 번째 구간에서 달린 도로 길이는 20km, 달린 속도는 30km/h
세 번째 구간에서 달린 도로 길이는 40km, 달린 속도는 40km/h
연정이가 100km 도로를 달리는 동안 속도를 위반한 최댓값을 구하시오.

입력
첫 줄에 N과 M이 주어진다. 그 다음 줄부터 N개의 줄은 각 구간의 길이 및 해당 구간에서의 제한 속도가 주어지며, 다음 M개의 줄은 연정이가 달린 각 구간의 길이와 해당 구간에서 달린 속도가 주어진다.

출력
연정이가 도로를 달리는 동안 속도 위반한 최댓값을 출력하시오. 단, 속도 위반을 하지 않았다면 0을 출력하시오.

PS:
1. I tried solving more time&memory-efficiently, but it got too complicated.
2. I created lists and recorded every data into them. (sort of DP)
3. By running through every element of each list, I found out how faster 연정 went compared to the limit.
4. I outputted the maximum of the comparison recorded above.

n, m = map(int, input().split())
appropriate = []
actual = []
appropriat = []
actua = []
appact = []
for i in range(n):
    appropriat.append(list(map(int, input().split())))
for i in range(m):
    actua.append(list(map(int, input().split())))

for app in appropriat:
    for i in range(app[0]):
        appropriate.append(app[1])

for act in actua:
    for i in range(act[0]):
        actual.append(act[1])

for i in range(100):
    appact.append(actual[i]-appropriate[i])
    
if max(appact) < 0:
    print(0)
else:
    print(max(appact))

0개의 댓글