Problem Link
https://www.hackerrank.com/challenges/minimum-loss/problem?isFullScreen=true
구매한 집을 되팔았을 때 날 수 있는 손해 금액 중 최솟값을 구하는 문제
import os
import sys
def minimumLoss(price):
idxWprice = [(i, v) for i, v in enumerate(price)]
idxWprice.sort(key = lambda x:x[1])
minVal = sys.maxsize
for i in range(1, len(price)):
if idxWprice[i][0] < idxWprice[i-1][0]:
diff = idxWprice[i][1] - idxWprice[i-1][1]
minVal = min(diff, minVal)
return minVal
📌 코드 구현 설명
(연도, 집값)
정보를 저장한idxWprice
리스트 생성- 집값을 기준으로
idxWprice
정렬- 정렬한
idxWprice
를 앞에서부터 순차적으로 탐색하며 최소 손해 금액을 계산
- 인덱스
i
번째의 연도가i-1
의 연도보다 작은 경우에만 계산- 집값을 기준으로 정렬하였기 때문에, 해당 연도 끼리(
i
번째의 연도와i-1
의 연도)의 최소 손해 금액을idxWprice[i][1] - idxWprice[i-1][1]
로 계산할 수 있음- 반복문이 한번 수행될 때마다 이전 최솟값과 비교하여 정답을 구함
sys.maxsize
로 설정하였다. (마냥 큰 값으로 설정하면 코드를 잘 짜도 오류가 나는 경우가 있었다.)