https://www.hackerrank.com/challenges/lilys-homework/problem
이미 정렬된 내용과 그렇지 않은 내용을 구분하여 풀이
오름차순 정렬과 내림차순 정렬 모두 진행한 뒤 swap 횟수의 min값 찾기
def checkChangenum(n, arr):
swap = 0
idx_dict = {arr[i]:i for i in range(n)}
sorted_arr = sorted(arr)
for i in range(n):
if arr[i] != sorted_arr[i]:
idx_to_go = idx_dict[sorted_arr[i]]
# idx swap
idx_dict[arr[i]], idx_dict[sorted_arr[i]] = idx_dict[sorted_arr[i]], idx_dict[arr[i]]
# value swap
arr[i], arr[idx_to_go] = arr[idx_to_go], arr[i]
# swap check
swap += 1
return swap
def lilysHomework(n, arr):
# Write your code here
reversed_arr = list(reversed(arr))
return min(checkChangenum(n, arr), checkChangenum(n, reversed_arr))