코딩
[HackerRank] Lily's Homework .py 본문
www.hackerrank.com/challenges/lilys-homework/problem
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번 정렬되게 된다.
'코딩테스트' 카테고리의 다른 글
[백준] 14501 퇴사 .py (0) | 2021.03.24 |
---|---|
[백준] 11055 가장 큰 증가 부분 수열 .py (0) | 2021.03.24 |
[프로그래머스] 도둑질, 스티커모으기 .py (0) | 2021.03.03 |
파이썬 bisect_left, bisect_right 비교 (0) | 2021.02.24 |
[프로그래머스] 순위검색 .py (0) | 2021.02.23 |
Comments