Stay Hungry Stay Foolish

BOJ 코딩테스트/Bronze

[BOJ] 2460. 지능형 기차 2 (Python/Bronze 3)

dev스카이 2024. 11. 15. 16:39

[문제 링크] 👉 https://www.acmicpc.net/problem/2460


풀이 방법

내릴 때는 빼고, 탈 때는 더한다.

그리고 연산 결과를 max() 함수를 통해 최댓값을 갱신한다.

 

최댓값 갱신

result = max(result, max_on)

 

Solution

get_off, get_on = [], []
for _ in range(10):
    off, on = map(int, input().split())
    get_off.append(off)
    get_on.append(on)

result, max_on = 0, 0
for off, on in zip(get_off, get_on):
    max_on -= off
    max_on += on
    result = max(result, max_on)
print(result)

 

 

개선할 점

get_off와 get_on 리스트에 모든 값을 저장할 필요 없이, 바로 계산하면서 최대 인원을 찾는 방식으로 개선할 수 있다.

  • get_off와 get_on 리스트를 제거하고, 입력을 받는 동시에 max_on을 업데이트하여 최대 인원 수를 result에 저장한다.
  • 이렇게 하면 코드가 더 간결해지고 메모리 사용량이 줄어든다.

개선된 코드

result, max_on = 0, 0
for _ in range(10):
    off, on = map(int, input().split())
    max_on -= off
    max_on += on
    result = max(result, max_on)
print(result)