https://www.acmicpc.net/problem/11971
문제
말썽꾸러기 연정이는 오늘도 태우의 자동차를 몰래타고 신나게 도로를 달리는 중이다.
도로는 정확히 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을 출력하시오.
백준 11971 '속도 위반' 문제입니다.
100개의 배열을 만들어서 각각 값을 대입해줬습니다.
import sys
N, M = map(int, sys.stdin.readline().split())
rule = []
yeon = []
a = 0
for i in range(N):
b, c = list(map(int, sys.stdin.readline().split()))
a += b
rule.append([a,c])
a = 0
for i in range(M):
b, c = list(map(int, sys.stdin.readline().split()))
a += b
yeon.append([a,c])
diff_rule = [0] * 100
diff_yeon = [0] * 100
for i in range(100):
for j in range(len(rule)):
if i < rule[-j-1][0]:
diff_rule[i] = rule[-j-1][1]
for j in range(len(yeon)):
if i < yeon[-j-1][0]:
diff_yeon[i] = yeon[-j-1][1]
max = 0
for i in range(100):
if max < diff_yeon[i] - diff_rule[i]:
max = diff_yeon[i] - diff_rule[i]
print(max)
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 11256번 : 사탕 (0) | 2022.02.03 |
---|---|
파이썬) 백준 알고리즘 | 20363번 : 당근 키우기 (0) | 2022.02.03 |
파이썬) 백준 알고리즘 | 12841번 : 정보대 등산 (0) | 2022.02.03 |
파이썬) 백준 알고리즘 | 2502번 : 떡 먹는 호랑이 (0) | 2022.02.02 |
파이썬) 백준 알고리즘 | 1652번 : 누울 자리를 찾아라 (0) | 2022.02.01 |
댓글