[HackerRank][Python3] Merge Sort: Counting Inversions
                2018. 7. 22. 23:42 |
                
                    프로그래밍/HackerRank
                
            
            
            
        Problem :
https://www.hackerrank.com/challenges/ctci-merge-sort/problem
My Solution :
#!/usr/bin/env python3
def countInversions(arr, left, right):
    count = 0
    if right - left < 2:
        return count
    middle = (right + left) // 2
    left_count = countInversions(arr, left, middle)
    right_count = countInversions(arr, middle, right)
    count += left_count + right_count
    merged = []
    i, j = left, middle
    while i < middle and j < right:
        if arr[i] > arr[j]:
            merged.append(arr[j])
            j += 1
            count += middle - i
        else:
            merged.append(arr[i])
            i += 1
    if i == middle:
        merged += arr[j:right]
    else:
        merged += arr[i:middle]
    arr[left:right] = merged
    return count
t = int(input())
for _ in range(t):
    n = int(input())
    arr = list(map(int, input().rstrip().split()))
    result = countInversions(arr, 0, n)
    print(result)
'프로그래밍 > HackerRank' 카테고리의 다른 글
| [HackerRank][Python3] Tries: Contacts (0) | 2018.08.05 | 
|---|---|
| [HackerRank][Python3] Swap Nodes [Algo] (0) | 2018.07.27 | 
| [HackerRank][Python3] Special Palindrome Again (0) | 2018.07.23 | 
| [HackerRank][Python3] Fraudulent Activity Notifications (0) | 2018.07.23 | 
| [HackerRank][Python3] Roads and Libraries (0) | 2018.07.22 | 
| [HackerRank][Python3] BFS: Shortest Reach in a Graph (0) | 2018.07.22 | 
| [HackerRank][Python3] Find the nearest clone (0) | 2018.07.22 | 
| [HackerRank][Python3] DFS: Connected Cell in a Grid (0) | 2018.07.21 | 
최근에 달린 댓글 최근에 달린 댓글