본문 바로가기
코딩 테스트/do it! 알고리즘 코딩테스트

019 K번째 수 (미해결)

by ornni 2024. 5. 2.
728x90
반응형

첫번째 코드

 

퀵 정렬을 이해는 했지만, 코드를 구성하는 방법이 생각나지 않아 먼저 책을 참고하여 작성했다.

나중에 풀어볼 문제지만 코드 이해가 어려워 여러번 풀어볼 것 같다.

 

근데 문제는 이 코드가 로컬에서는 돌아가는데 백준에서는 런타임 에러 (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])

 

....해결책..?

반응형

'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글

021 버블 소트  (0) 2024.05.07
020 수 정렬하기 2  (0) 2024.05.02
018 ATM  (0) 2024.04.30
017 소트인사이드  (0) 2024.04.30
015 수 정렬하기  (0) 2024.04.25