정수 배열 prices가 주어집니다. 여기서 prices[i]는 상점에서 i번째 항목의 가격입니다.
상점에서 항목에 대한 특별 할인이 있습니다. 만약 i번째 항목을 구매하면, j번째 항목의 가격만큼 할인을 받게 됩니다. 여기서 j는 i보다 큰 최소 인덱스이며 prices[j] <= prices[i]를 만족합니다. 그렇지 않으면 할인을 받지 못합니다.
결과적으로 answer[i]는 특별 할인을 고려한 후 i번째 항목의 최종 가격이 됩니다.
• 입력: prices = [8,4,6,2,3]
• 출력: [4,2,4,2,3]
• 설명:
• 항목 0: 가격 8, 할인 4, 최종 가격 4 (8 - 4 = 4)
• 항목 1: 가격 4, 할인 2, 최종 가격 2 (4 - 2 = 2)
• 항목 2: 가격 6, 할인 2, 최종 가격 4 (6 - 2 = 4)
• 항목 3: 가격 2, 할인 없음, 최종 가격 2
• 항목 4: 가격 3, 할인 없음, 최종 가격 3
• 입력: prices = [1,2,3,4,5]
• 출력: [1,2,3,4,5]
• 설명: 모든 항목에 대해 할인이 없습니다.
• 입력: prices = [10,1,1,6]
• 출력: [9,0,1,6]
• 1 <= prices.length <= 500
• 1 <= prices[i] <= 1000
class Solution:
def finalPrices(self, prices: List[int]) -> List[int]:
n = len(prices)
answer = prices[:] # 원본 배열을 복사하여 초기화
for i in range(n):
for j in range(i + 1, n):
if prices[j] <= prices[i]:
answer[i] = prices[i] - prices[j]
break
return answer