오늘의 공부 키워드
1475 Final Prices With a Special Discount in a Shop
1475 Final Prices With a Special Discount in a Shop
문제 설명
주어진 정수 배열 prices에서 각 아이템의 가격이 주어집니다. 특별 할인을 받을 수 있는 조건은 다음과 같습니다:
- i번째 아이템을 살 때, j가 i보다 크고 prices[j]가 prices[i]보다 작거나 같은 최소의 인덱스를 찾아서 prices[j] 만큼의 할인을 받습니다.
- 만약 그런 인덱스가 없다면 할인을 받지 못합니다.
주어진 배열 prices에서 각 아이템의 최종 지불 가격을 계산하여 반환하는 정수 배열 answer를 반환하는 문제입니다.
예제
- 예제 1:
- 입력: prices = [8, 4, 6, 2, 3]
- 출력: [4, 2, 4, 2, 3]
- 설명:
- 아이템 0: 가격은 8이고, 최소 인덱스 1에서 4만큼 할인받아 최종 가격은 4입니다.
- 아이템 1: 가격은 4이고, 최소 인덱스 3에서 2만큼 할인받아 최종 가격은 2입니다.
- 아이템 2: 가격은 6이고, 최소 인덱스 3에서 2만큼 할인받아 최종 가격은 4입니다.
- 아이템 3: 할인을 받지 못하여 최종 가격은 2입니다.
- 아이템 4: 할인을 받지 못하여 최종 가격은 3입니다.
- 예제 2:
- 입력: prices = [1, 2, 3, 4, 5]
- 출력: [1, 2, 3, 4, 5]
- 설명: 모든 아이템이 할인을 받지 못합니다.
- 예제 3:
- 입력: prices = [10, 1, 1, 6]
- 출력: [9, 0, 1, 6]
- 설명:
- 아이템 0: 가격은 10이고, 최소 인덱스 1에서 1만큼 할인받아 최종 가격은 9입니다.
- 아이템 1: 가격은 1이고, 최소 인덱스 2에서 1만큼 할인받아 최종 가격은 0입니다.
- 아이템 2: 할인을 받지 못하여 최종 가격은 1입니다.
- 아이템 3: 할인을 받지 못하여 최종 가격은 6입니다.
파이썬코드
def finalPrices(prices):
n = len(prices)
answer = [0] * n
for i in range(n):
discount = 0
for j in range(i + 1, n):
if prices[j] <= prices[i]:
discount = prices[j]
break
answer[i] = prices[i] - discount
return answer
# 예제 테스트
print(finalPrices([8, 4, 6, 2, 3])) # 출력: [4, 2, 4, 2, 3]
print(finalPrices([1, 2, 3, 4, 5])) # 출력: [1, 2, 3, 4, 5]
print(finalPrices([10, 1, 1, 6])) # 출력: [9, 0, 1, 6]
풀이 방법
이 문제를 해결하기 위해 다음과 같은 단계로 접근할 수 있습니다:
- prices 배열을 순회하면서 각 아이템의 가격을 확인합니다.
- 각 아이템의 가격에 대해 뒤에 나오는 가격 중에서 최소 가격을 찾습니다.
- 최소 가격을 찾아서 할인을 적용하고 최종 가격을 계산합니다.
- 최종 가격을 answer 배열에 저장합니다.
결론
이 글에서는 파이썬을 사용하여 'Final Prices With a Special Discount in a Shop' 문제를 해결하는 방법에 대해 살펴보았습니다. 각 아이템에 대해 뒤에 나오는 최소 가격을 찾아 할인을 적용하는 방법을 사용하여 문제를 해결할 수 있었습니다. 이 문제를 통해 조건문과 반복문을 활용한 배열 탐색 방법을 익힐 수 있습니다.
'python' 카테고리의 다른 글
99클럽 코테 스터디 29일차 TIL (0) | 2024.06.27 |
---|---|
99클럽 코테 스터디 28일차 TIL (0) | 2024.06.25 |
99클럽 코테 스터디 26일차 TIL (0) | 2024.06.23 |
99클럽 코테 스터디 25일차 TIL (0) | 2024.06.22 |
99클럽 코테 스터디 24일차 TIL (0) | 2024.06.21 |