문제
각 날짜별로 매매가를 알고 있다고 가정 후 최대 이익을 구하는 문제
- 원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고 있다.
- 당국의 감시망에 걸리지 않기 위해 하루에 최대 1만큼 구입할 수 있다.
- 판매는 얼마든지 할 수 있다.
예를 들어 3일 동안의 매매가가 1, 2, 3 이라면 처음 두 날에 원료를 구매하여 마지막 날에 팔면 3의 이익을 얻을 수 있다.
접근방식
각 테스트 케이스마다 배열의 마지막부터 접근
sell 변수와 ans 변수를 0으로 설정
먼저 배열을 마지막 값을 sell 변수에 할당
배열을 돌면서 만약 sell 값이 현재 인덱스의 값보다 크면 ans 변수에 현재 sell값과 현재 인덱스 값의 차를 더해줌
만약 sell 값이 현재 인덱스의 값보다 작으면(이익 볼 수 x) sell값에 현재 인덱스의 값 할당
코드
T = int(input())
for test_case in range(1, T + 1):
M = int(input())
ans = 0
arr = list(map(int, input().split()))
sell = 0
for price in arr[::-1]:
if (price > sell):
sell = price
else:
ans += sell - price
print('#', test_case, " ",ans, sep="")
'CodingTest' 카테고리의 다른 글
SWEA - 파리 퇴치(2001) (1) | 2023.10.18 |
---|---|
SWEA - View(1206) (1) | 2023.10.16 |
SWEA - 최빈수 구하기(1204) (0) | 2023.10.16 |
SWEA - 지그재그 숫자(1986) (0) | 2023.10.16 |
SWEA - 간단한 소인수분해(1945) (1) | 2023.10.16 |