문제링크
https://www.acmicpc.net/problem/2460
문제 풀이
1. max() 사용해서 푸는 방식
- 모든 역의 탑승 인원을 people 리스트에 저장하고, 마지막에 max(people)를 사용해 최대값을 계산
- max() 함수를 한 번 더 호출해야 해서 약간의 성능 저하가 있을 수 있다.
2. max()를 사용하지 않고 푸는 방식
- 각 역에서 탑승 인원을 계산한 후, 즉시 max_value와 비교해 최대값을 갱신
- 최대값을 실시간으로 갱신하므로 max() 함수 호출이 필요 없다.
- 코드가 약간 복잡하며, 비교 조건이 추가되어 가독성이 떨어질 수 있다.
코드
1. max() 사용
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_value = 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_value: # 마지막 계산된 값과 max_value 비교
max_value = people[-1]
elif people[-2] >= max_value: # 마지막에서 두 번째 값과 max_value 비교
max_value = people[-2]
print(max_value)
'알고리즘' 카테고리의 다른 글
[PYTHON/파이썬] 백준 BAEKJOON 2609번 최대공약수와 최소공배수 (0) | 2024.08.19 |
---|---|
[JAVA/자바] 백준 BAEKJOON 3048번 개미 (0) | 2024.08.18 |
[JAVA/자바] 백준 BAEKJOON 10798번 세로읽기 (0) | 2024.08.15 |
[PYTHON/파이썬] 백준 BAEKJOON 10818번 최소, 최대 (0) | 2024.08.14 |
[JAVA/자바] 백준 BAEKJOON 3460번 이진수 (0) | 2024.08.13 |