CodingTest

SWEA - 백만장자 프로젝트(1859)

취업하고싶다! 2023. 10. 13. 20:15
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

문제

각 날짜별로 매매가를 알고 있다고 가정 후 최대 이익을 구하는 문제

  1.  원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고 있다.
  2.  당국의 감시망에 걸리지 않기 위해 하루에 최대 1만큼 구입할 수 있다.
  3.  판매는 얼마든지 할 수 있다.

예를 들어 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