[문제]
최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.
예를 들어, 위와 같은 경우를 살펴보자. 이 경우, 기차 안에 사람이 가장 많은 때는 2번역에서 3명의 사람이 기차에서 내리고, 13명의 사람이 기차에 탔을 때로, 총 42명의 사람이 기차 안에 있다.
이 기차는 다음 조건을 만족하면서 운행된다고 가정한다.
- 기차는 역 번호 순서대로 운행한다.
- 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다.
- 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.
- 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다.
4개의 역에 대해 기차에서 내린 사람 수와 탄 사람 수가 주어졌을 때, 기차에 사람이 가장 많을 때의 사람 수를 계산하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/2455
2455번: 지능형 기차
최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다.
www.acmicpc.net
🎨 풀이
💡 전체 코드
import sys
total = 0
max = 0
for _ in range(4):
a, b = map(int, sys.stdin.readline().split())
total = total - int(a)
if max < total :
max = total
total = total + int(b)
if max < total :
max = total
print(max)
> 핵심 : 더하기 전에 한 번 비교, 더한 후에도 한 번 더 비교
🍦 코드 설명 (실행 순서대로 나열)
# main
total = 0
max = 0
1. total과 max 변수를 0으로 초기화한다.
- total : 기차에 타고 있는 사람 수
- max : 기차에 사람이 가장 많을 때의 수
for _ in range(4):
a, b = map(int, sys.stdin.readline().split())
total = total - int(a)
if max < total :
max = total
total = total + int(b)
if max < total :
max = total
2. for문을 4번 반복한다. (4개의 역이 있기 때문)
3. a와 b를 입력받는다.
- a : 역에서 내린 사람 수
- b : 역에서 탄 사람 수
4. total에서 a를 빼준다.
5. max가 total보다 많다면, max에 total을 넣는다.
- 현재 기차에 타고 있는 사람 수가 max보다 많다는 뜻이기 때문이다!!
6. total에 b를 더해준다.
7. 다시 한 번 max와 total을 비교해준 후, total이 더 크면 max에 total 값을 넣는다.
print(max)
8. max를 출력한다.

끝~
⭐ 느낀점
> 다 풀고나서 다른 사람들의 코드를 좀 보니까.. 굳이 한 타임에 두번이나 비교해줄 필요가 없는 것 같더라. 생각해보니 그게 맞는 것도 같다. 빼주는데 어떻게 거기서 더 큰 숫자가 나오나. 역시 내 코드에만 갇혀있지않고 다른 사람들 코드 참고하는 것도 좋은 듯하다. 생각의 범위가 넓어진 기분이다. 좋네~
'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 2953번 - 나는 요리사다 (파이썬) (0) | 2022.09.07 |
---|---|
[백준] 2902번 - KMP는 왜 KMP일까? (파이썬) (0) | 2022.09.06 |
[백준] 1032번 - 명령 프롬프트 (파이썬) (0) | 2022.09.04 |
[백준] 2490번 - 윷놀이 (파이썬) (0) | 2022.09.03 |
[백준] 2442번 - 별 찍기 5 (파이썬) (0) | 2022.09.02 |