우당탕탕 개발일지

[해싱] Softeer level 2 GBC (Python 파이썬) 본문

알고리즘

[해싱] Softeer level 2 GBC (Python 파이썬)

민아당긴아 2024. 3. 22. 12:42

💡문제 링크

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

💡문제 분석 요약

1. 엘레베이터가 0m부터 100m까지 일정한 거리를 이동

2. 각 구간마다 제한속도가 있음. 예를 들어 첫번째 구간의 길이가 50m이고, 제한속도가 50m/s이면 그 구간을 지날 때에는 속도가 50m/s를 넘으면 안된다.

3. 테스트를 해보았을 때, 제한속도를 가장 크게 넘겼을 때의 속도를 구하기

 

💡알고리즘 설계

1. 각 구간별 제한속도를 담은 리스트 elev. 인덱스가 구간 위치에 해당하고, 원소가 제한속도에 해당한다.

2. 각 구간별 테스트 운행속도를 담은 리스트 test. 인덱스가 구간 위치에 해당하고, 원소가 운행속도에 해당한다.

3. 배열 elev, test의 같은 원소를 하나하나 탐색하며, elev[i] < test[i]인 경우 answer의 후보로 test[i] - elev[i](속도 초과값)을 넣는다.

4. 후보들 중에서 가장 큰 값을 최종 answer로 출력한다.

💡코드

import sys

n, m = map(int, input().split())
elev = []
for _ in range(n):
    a, b = map(int, input().split())
    elev += [b] * a
    
test = []
for _ in range(m):
    c, d = map(int, input().split())
    test += [d] * c

answer = 0
for i in range(100):
    if elev[i] < test[i]:
        answer = max(answer, test[i] - elev[i])
print(answer)

 

💡 느낀점 or 기억할정보

리스트가 너무 길어지면 시간초과 걸릴까 걱정했는데 시간초과 안 떠서 신기했던 문