• Feed
  • Explore
  • Ranking
/
/
    코딩 테스트 풀이

    [백준] 11971 속도 위반

    Python
    J
    J. Hwang
    2025.05.04
    ·
    4 min read

    문제

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

    도로는 정확히 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을 출력하시오.


    내 풀이

    import sys
    input = sys.stdin.readline
    
    n, m = map(int, input().split())
    
    limit = []
    for _ in range(n):
        dist, speed = map(int, input().split())
        limit += [speed]*dist
        
    yj = []
    for _ in range(m):
        dist, speed = map(int, input().split())
        yj += [speed]*dist
        
    maxspeeding = 0
    i = 0
    while i < 100:
        maxspeeding = max(maxspeeding, yj[i] - limit[i])
        i += 1
        
    print(maxspeeding)

    코멘트

    도로가 100km밖에 안되고 구간별 도로 길이와 제한 속도가 모두 양의 정수라고 했으므로 1km 단위로 제한 속도와 실제로 연정이가 달린 속도를 저장한 배열을 만들어서 같은 위치일 때 속도를 비교하도록 구현하면 된다.


    References

    https://www.acmicpc.net/problem/11971







    - 컬렉션 아티클