코딩테스트/SW Expert Academy

[D2] 1859. 백만 장자 프로젝트

2024. 9. 29. 17:29

1859. 백만 장자 프로젝트

 

✏️ 문제 풀이

- 가격 리스트를 역순으로 순회하면서 판매 가격을 업데이트하고, 이익을 계산하여 누적 합산 

ex) 1 1 3 1 2

마지막 날 2(판매가격)를 기준으로 비교

(2-1) 

3 > 2 이므로 판매가격 3으로 업데이트

(3-1) + (3-1)

=> 1 + 2 + 2 = 5

 

- 리스트 슬라이싱: list[start:end:step(간격)]

prices[::-1] → prices 리스트의 마지막 요소부터 첫 번째 요소까지 순회하며 각 요소를 price라는 변수에 할당

 

N = int(input())

for tc in range(N):
    M = int(input())
    prices = list(map(int, input().split()))
    total_profit = 0  # 총 이익 초기화
    sell_price = 0  # 판매 가격 초기화

    # 가격 배열을 역순으로 탐색
    for price in prices[::-1]:
        # 현재 가격이 판매 가격보다 크거나 같으면
        if price >= sell_price:
            sell_price = price  # 판매 가격 업데이트
        else:
            # 판매 가격에서 현재 가격을 뺀 이익을 총 이익에 추가
            total_profit += sell_price - price

    print(f"#{tc + 1} {total_profit}")