본문 바로가기
Algorithm/구현

[Python3] 백준 2460번 지능형 기차 2

by HANNI하니 2021. 12. 29.

try 1 times / 난이도 : ★

문제 확인

 

2460번: 지능형 기차 2

최근에 개발된 지능형 기차가 1번역(출발역)부터 10번역(종착역)까지 10개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다.

www.acmicpc.net

코드 깃허브 확인

 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

정답 해설

num = 0 # 현재 기차에 있는 사람 수
result = [] # 정거장당 사람 수 리스트로 저장하기

for i in range(1,11):
    down, up = list(map(int,input().split()))
    num = num - down + up # 내리고 타기
    result.append(num)

result.sort()
print(result[-1]) # 가장 많았던 사람수

 

공부한 내용

1.  오류 확인

문제 조건 중 '각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.'를 보고

아래와 같은 조건문을 썼는데, 정답이 아니라고 나왔다.

#     if num < down :
#         break # 내리는 사람이 더 많을 수 없다.

조건을 지정하라는 게 아니라 그런 경우를 애초에 input으로 넣지 않는다는 것 같다.

하지만, if문으로 넣어도 사실상 오류도 안나고 다 잘 나오는데, 틀리게 하는 이유를 잘 모르겠다...

문제를 잘 이해하자!

 

 

2. 다른 풀이 이해하기

최대값을 비교하면서 찾기

다른 풀이법에 대부분이 이런 형태로 했다.

따로 리스트를 안만들어도 바로바로 값들을 비교해서 최대값을 찾을 수 있어서 좋은 방법인 것 같다.

passenger = 0
max_passenger = 0

for _ in range(10):
    out_train, in_train  = map(int, input().split()) 
    passenger += in_train - out_train 
    max_passenger = max(passenger, max_passenger) 
    
print(max_passenger)

 

 

#305 백준 파이썬 [2460] 지능형 기차 2

https://www.acmicpc.net/problem/2460 PYTHON CODE passenger = 0 max_passenger = 0 for _ in range(10): out_train, in_train = map(int, input().split()) passenger += in_train - out_train max_passenger..

claude-u.tistory.com

 

댓글