코딩테스트
[HackerRank] Lily's Homework .py
ssooyn_n
2021. 3. 4. 20:14
www.hackerrank.com/challenges/lilys-homework/problem
Lily's Homework | HackerRank
Help George figure out Lily's homework
www.hackerrank.com
def solution(arr):
cnt = 0
n = len(arr)
sorted_arr = sorted(arr)
index_dict = {arr[i] : i for i in range(n)}
for i in range(n):
if arr[i] != sorted_arr[i]:
get_index = index_dict[sorted_arr[i]]
index_dict[ arr[i] ] = index_dict[ sorted_arr[i]]
arr[i], arr[get_index] = sorted_arr[i], arr[i]
cnt += 1
return cnt
def lilysHomework(arr):
reversed_arr = list(reversed(arr))
return min(solution(arr), solution(reversed_arr))
이 문제의 핵심은
# 1. dictionary를 사용하지 않으면 시간초과가난다.
# 2. return min(solution(arr), solution(list(reversed(arr)) 을 해주면 같은 arr을 공유하므로, arr이 2번 정렬되게 된다.
