019 K번째 수 (미해결)
첫번째 코드
퀵 정렬을 이해는 했지만, 코드를 구성하는 방법이 생각나지 않아 먼저 책을 참고하여 작성했다.
나중에 풀어볼 문제지만 코드 이해가 어려워 여러번 풀어볼 것 같다.
근데 문제는 이 코드가 로컬에서는 돌아가는데 백준에서는 런타임 에러 (RecursionError)로 돌아가지 않는다는 것이다...
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
A = list(map(int, input().split()))
def quickSort(S, E, K):
global A
if S < E:
pivot = partition(S, E)
if pivot == K:
return
elif K < pivot:
quickSort(S, pivot - 1, K)
else:
quickSort(pivot + 1, E, K)
def swap(i, j):
global A
temp = A[i]
A[i] = A[j]
A[j] = temp
def partition(S, E):
global A
if S + 1 == E:
if A[S] > A[E]:
swap(S, E)
return E
M = (S + E) // 2
swap(S, M)
pivot = A[S]
i = S + 1
j = E
while i <= j:
while pivot < A[j] and j > 0:
j = j - 1
while pivot > A[i] and i < len(A) - 1:
i = i + 1
if i <= j:
swap(i, j)
i = i + 1
j = j - 1
A[S] = A[j]
A[j] = pivot
return j
quickSort(0, n - 1, k - 1)
print(A[k-1])
....해결책..?