# bronze 3
문제
https://www.acmicpc.net/problem/2460
코드
1. max() 사용 O
people = [0] #처음엔 기차에 0명
for i in range(1,11): #역 10개 순회
cnt =list(map(int,input().split())) #하차 = cnt[0]명, 승차 = cnt[1]
people.append(people[2*(i-1)]-cnt[0]) #people[odd] = 승차 후 탑승객 - 하차 탑승객
people.append(people[2*i-1]+cnt[1]) #people[even] = 하차 후 탑승객 + 승차 탑승객
print(max(people)) #승객수 최대 일때
2. max 사용 X
people = [0]
max = 0
for i in range(1,11):
cnt =list(map(int,input().split()))
people.append(people[2*(i-1)]-cnt[0])
people.append(people[2*i-1]+cnt[1])
if people[-1] >= max:
max = people[-1]
elif people[-2] >= max:
max = people[-2]
print(max)
풀이
- people 리스트 생성 → 각 역에서 내렸을 때, 탔을 때 사람 수가 요소로 들어간다.
- 즉, 리스트의 홀수 인덱스 == 각 역에서 하차 후 남은 사람 수, 짝수 인덱스 == 승차 후 남은 사람 수
- 또한 각 인덱스의 값을 계산하기 위해선 서로의 값이 필요하다 (꼬리물기식)
- 계산이 끝난 후, max() 함수를 이용해 최대값을 도출한다.
- 시간 복잡도를 줄이기 위해, max()함수를 이용하지 않고 풀려면
- max값을 생성한 후 매 정거장마다 갱신된 인원수를 최대값과 비교한 뒤 갱신한다.
'Algorithm > Beakjoon' 카테고리의 다른 글
[Python] 백준 10951번_A+B - 4 (0) | 2022.07.30 |
---|---|
[Python] 백준 2581번_소수 (0) | 2022.07.30 |
[Python] 백준 10818번_ 최소, 최대 (0) | 2022.07.26 |
[Python] 백준 3460번_ 이진수 (0) | 2022.07.26 |
[Python] 백준 1978번_ 소수 찾기 (0) | 2022.07.24 |